直接插入排序演算法 (straight insertion sort) 適用於基本有序且記錄數少的陣列,但是這樣的要求已經算比較苛刻了。所以乙個直觀的改進方法是,對於乙個陣列,可以使它變得基本有序,再用用希爾排序改進直接插入排序就會得到比較好的結果,如下圖所示
初始的時候將間隔為 4 的元素通過直接插入排序的方法進行排序,之後將的得到的結果中間隔為 2 的元素通過直接插入排序的方法進行排序,最後對整體進行直接插入排序,因為前兩步相當於已經將陣列變為乙個基本有序的陣列,所以會降低排序的複雜程度。
#include
void insertsort(int k, int n)
k[j+gap] = temp;}}
}while(gap > 1);
}int main()
; insertsort(a, 10);
printf("排序後的結果是:");
for( i=0; i < 10; i++ )
printf("\n\n");
return
0;}
006 排序演算法 希爾排序
一 概述 希爾排序 shell s sort 是插入排序的一種又稱 縮小增量排序 diminishing increment sort 是直接插入排序演算法的一種更高效的改進版本。希爾排序是非穩定排序演算法。該方法因d.l.shell於1959年提出而得名。排序方法 時間複雜度 平均 時間複雜度 最...
32排序演算法之快速排序
排序演算法之快速排序 基本原理 反覆進行有序劃分。有序劃分方法 在陣列a中任選乙個元素x作為劃分元素,通過比較將小於x的元素換到陣列的左端 左段 將大於或等於x的元素換到陣列右端 右段 x本身位於兩段之間。如果左 右段元素個數多於1,則遞迴的將左 右段各自劃分,直到每段元素個數都不超過1,從而達到排...
5 排序演算法2
選擇排序 在未排序序列中找到最小元素,存放到排序序列的起始位置 再從剩餘未排序元素中繼續尋找最小元素,然後放到排序序列末尾。以此類推,直到所有元素均排序完畢。int num 控制遍歷次數 for int i 0 i num.length 1 i 控制遍歷次數 for int i 0 i num1.l...