C++實現直接插入排序
阿新 • • 發佈:2019-01-31
#include<iostream> using namespace std; #define SIZE_A 9 int main(){ void myshow(int* p,int length);//函式提前宣告 int list[SIZE_A]={-1,49,38,65,97,76,13,27,49}; cout<<"排序前:"<<endl; myshow(list,SIZE_A); //直接插入排序,位置【0】為哨兵位置,真正要排序的資料在位置【1】~【length-1】 for(int i=2;i<sizeof(list)/sizeof(int);i++){ list[0]=list[i];//位置【0】為哨兵 for(int j=i-1;j>=0;j--){//在前(i-1)個已排好序的區域性表中找到第i個元素的位置。 if(list[0]<list[j]){//從右往左逐一比較,並向右移位 list[j+1]=list[j]; }else{ list[j+1]=list[0]; break; } } } cout<<"排序後:"<<endl; myshow(list,SIZE_A); return 0; } /* description: 在標準輸出裝置上顯示陣列元素。 parameter: int* p:指向整形陣列首元素的指標 int length:整形資料長度 */ void myshow(int* p,int length){ for(int i=0;i<length;i++){ cout<<*(p+i)<<"\t"; } cout<<endl; }
執行結果如下:
時間及空間複雜度分析