32 排序演算法(5) 希爾排序

2021-08-16 09:06:16 字數 619 閱讀 6340

直接插入排序演算法 (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...