排序之希爾排序(C )

2021-10-06 02:08:44 字數 984 閱讀 6154

希爾排序是在插入排序的基礎上改進得來。因為插入排序對於基本有序和小序列有較快的速度。但是對於大序列和無序的序列就有缺陷。因此希爾排序的思想就是將序列轉化為若干小序列,每個小序列使用插入排序,最終實現基本有序,最後微調即可進一步優化排序方法。將前面所講的排序時間複雜度從o(n2)降到o(n1.3),**如下:

input number (q to quite):9

5613

4659

7136

49 q

your input list is:95

6134

6597

1364

9after sort:11

3344

5566

6799

9

#include

using

namespace std;

#define maxsize 100

struct list

;void

swap

(list &l,

int i,

int j)

void

show

(const list &l)

void

shellsort

(list &l)}}

}void

main()

cin.

clear()

; cin.

ignore

(100

,'\n');

cout <<

"your input list is: "

;show

(test)

; cout <<

"after sort: "

;shellsort

(test)

;show

(test)

;}

排序之希爾排序

提到希爾排序,我們得先來看看插入排序,因為希爾排序本身就是對插入排序的一種優化。插入排序的基本思想 每一步將乙個待排序的元素,按其排序碼的大小,插入到前面已經排好序的一組元素的合適位置上去,直到元素全部插完為止。就像我們玩鬥地主一樣,接牌的時候,其實就是一種插入排序,每接一張牌,就會把牌放在自己手牌...

排序之希爾排序

希爾排序法又稱縮小增量法。基本思想 先選定乙個整數,把待排序檔案中所有元素分成個n組。所有元素為n的記錄分在同一組內,並對每一組內的記錄進行排序。取重複上述分組和排序的工作。當到達 1時,所有元素在統一組內排好序。實現 void insertsortwithgap int a,int size,in...

排序之希爾排序

希爾排序對要排序的數字進行分組,在組內進行排序。排序完成需要進行多次分組,每次分組的個數是前一次分組個數的一半。以 3 2 9 0 6 1 5 4 8 7 該陣列為例從小到大進行排序。1.首先將該組數字進行分組,首次分組的個數為陣列長度除以2,即 10 2 5 組,下面相同顏色的為一組 即同一組內數...