C語言 希爾排序 使用監視哨

2021-10-07 19:00:38 字數 562 閱讀 9153

希爾排序(shell』s sort)是插入排序的一種又稱「縮小增量排序」(diminishing increment sort),是直接插入排序演算法的一種更高效的改進版本。希爾排序是非穩定排序演算法。該方法因d.l.shell於2023年提出而得名。

具體思想就是從無序的陣列中每隔一段間隔挑出來乙個數字,將挑出來的數字進行直接插入排序,這裡用到了監視哨,所以從a[1]開始錄入元素資訊。

相對於直接插入演算法,希爾排序更適合排序更長的序列,插入的次數少,距離短,所以說要比直接插入法好。

**

//希爾排序

//69 56 12 136 3 55 46 99 88 25

#include

#define n 11

intshell_sort

(int a,

int n)

//引入陣列,n是陣列長度 }}

}int

main()

執行結果

資料結構上機 希爾排序(含監視哨版本)

首先要明確一下什麼是監視哨 這個詞很容易望文生義 錯誤地認為是監視比較的值 查閱資料才發現 監視哨的意義是防止下標越界,提高速度 在插入排序中,取用r 0 作為監視哨,就可以在迴圈中減少一次判斷j 0的條件,從而提高速度 而在本題之中,採取五個監視哨的目的在於 希爾排序是跳躍的,最大的區間d 0 是...

插入排序監視哨和雞尾酒排序

插入排序 帶監視哨 思路 設定a 0 元素為監視哨,a 1 a n 存放資料 a 1 為第乙個元素,根據插入排序的思想,預設a 1 有序,從i 2開始向前進行插入,如 陣列 a 0 1 2 3 4 5 num 0 5 4 3 1 8 注 a 0 初始化為0 注 如果不用監視哨,進行普通插入排序,則不...

直接插入排序 監視哨的作用

從前往後依次將每乙個元素插入到前面已排好的序列中,如當插入到arr i 時,arr 0 至arr i 1 已排好序了,將arr i 與arr 0 arr 2 arr 2 arr i 1 依次比較,直到找到正確的插入位置,當把最後乙個元素插入完成時,排序結束。現在我們有這樣乙個序列 我們可以將它拆開成...