插入排序c遞迴實現和非遞迴實現
阿新 • • 發佈:2019-01-05
1.特點 :在部分有序的情況下,插入排序效率很高,和選擇排序 不一樣的是,排序的效率受輸入序列的影響很大
平均時間複雜度O(n^2) 最好情況下 O(n) 最壞情況下O(^2)
2.程式碼實現 迭代的方式實現
void insertSort(int a[],int N) { if(a==NULL)return ; int i,j; //從第二個數進行掃描到N for(i=1;i<N;i++) { //和前一個比較,如果前一個大於當前(升序) 交換 for(j=i;j>0 && a[j-1] > a[j];j--) exchange(a,j, j-1); } }
遞迴實現 :和迭代思路一致 利用了系統堆疊 不過有點脫褲子放P的感覺
void insertSort2(int a[],int N)
{
if(a == NULL || N == 1)
return;
insertSort2(a, N - 1);
for(int i = N-1;i>0 && a[i] < a[i-1];i--)
exchange(a,i ,i-1);
}