1. 程式人生 > 其它 >排序演算法之——直接插入排序

排序演算法之——直接插入排序

技術標籤:資料結構與演算法排序演算法插入排序

直接插入排序


直接插入排序是屬於插入排序的一種簡單的方法。
給定一個數組array[]={2,4,6,1,3},對它進行升序排序。

直接插入排序簡介

直接插入排序的方法就是每次將一個新資料插入到有序佇列中的合適位置裡。,定義可能看的不是很懂,下面從例子直接來說明。

原陣列{2,4,6,1,3}

(1)將陣列中序列下標為0的元素視為個數為1的有序序列。

  1. 將4插入到[2]這個有序的序列之中去,因為2<4,所以插序之後的序列為[2,4,6,1,3]
  2. 將6插入到[2,4]這個有序的序列之中去,因為4<6,所以插序之後的序列為[2,4,6
    ,1,3]
  3. 將1插入到[2,4,6]這個有序的序列之中去,6>1,4>1,2>1,所以插入到2的前面,插序之後的序列為[1,2,4,6,3]
  4. 將3插入到[1,2,4,6]這個有序的序列之中去,因為6>3,4>3,2<3。所以插入到4之前,插序之後的序列為[1,2,3,4,6]

直接插入排序演算法的效能:

在這裡插入圖片描述

直接插入排序程式碼(c++)

#include<iostream> 
#include<cmath>
using namespace std;
void swap(int array[],int i,int j);
void print
(int array[],int len); int main() { int a[]={1,3,5,2,4,9}; int len=sizeof(a) / sizeof(a[0]); for(int i=1;i<len-1;i++) //氣泡排序 { int temp=a[i]; for(int j=i-1;j>=0&&a[j]>temp;j--) { a[j+1]=a[j]; } a[j+1]=temp; } print(a,len); return 0; } void print(int array[],int n)
{ cout<<"排序後的陣列"<<endl; for(int i=0;i<n-1;i++) { cout<<array[i]<<" "; } cout<<endl; }