C++資料結構5 插入排序
阿新 • • 發佈:2018-12-13
插入排序和氣泡排序,選擇排序並稱三大低階排序,但是插入排序的速度是最快的。
插入排序就是預設第一個數是已經排序好的,從第二個開始拿出去記為temp,依次和已經排序好的數進行比較,如果temp比他們都大,則放在最右邊,否則已經排序好的數依次移動,給temp一個適當的位置進行插入。
#include <iostream> using namespace std; template<class T> void InsertSort(T *a,const int n) //a為陣列,n為陣列元素個數 { int in,out; //假設out=0;第一個數已經排序完成,先取出第二個數,在已經排序好的數進行比較 for(out=1;out<n;out++) { in=out; T temp=a[out]; //拿出去一個數 while(in>0 & temp<a[in-1]) //如果拿出去的數比已經排序好的數小,則已經排序好的數向後移,直到遇到第一個(in=0)停止或者temp比這個數大為止 { a[in]=a[in-1]; //向後移動資料 --in; } a[in]=temp; //結束迴圈把temp拿進去 } } int main() { double a[]={0,5,6,7,1,8,9,10,23,5,6.3,4.5}; InsertSort(a,sizeof(a)/sizeof(a[0])); for(int i=0;i<(sizeof(a)/sizeof(a[0]));i++) cout<<a[i]<<endl; //cout << "Hello world!" << endl; return 0; }