C語言排序演算法之「希爾排序法」

2021-10-22 23:35:54 字數 351 閱讀 5836

演算法思想簡單描述:

在直接插入排序演算法中,每次插入乙個數,使有序序列只增加1個節點,並且對插入下乙個數沒有提供任何幫助。如果比較相隔較遠距離(稱為增量)的數,使得數移動時能跨過多個元素,則進行一次比較就可能消除多個元素交換。d.l.shell於2023年在以他名字命名的排序演算法中實現了這一思想。演算法先將要排序的一組數按某個增量d分成若干組,每組中

記錄的下標相差d.對每組中全部元素進行排序,然後再用乙個較小的增量對它進行,在每組中再進行排序。當增量減到1時,整個要排序的數被分成一組,排序完成。

void shell_sort(int *x, int n)

*(x+k+h) = t;}}

}

排序演算法之希爾排序(C語言實現)

希爾排序也叫縮小增量排序,它其實是直接插入排序的一種改進版本,實質是一種分組插入方法 基本思想 演算法先將要排序的一組數按某個增量 d d減到1時,整個要排序的數被分成一組,排序完成。一般的初次取序列的一半為增量 以後每次減半,直到增量為1。基本步驟 以如下8個記錄為例,來看一下排序的過程 40,3...

C語言之氣泡排序 快速排序法 希爾排序法

眾所周知程式設計排序方法眾多而且程式的好壞就取決於演算法的使用 下面是博主現在會的幾種排序方法希望對大家有所幫助。希爾排序法 author stylle date 2020 11 14 15 52 03 lasteditors stylle lastedittime 2020 11 14 15 52...

C語言排序演算法總結 希爾排序

之前我們總結了比較簡單的幾種排序方法。冒泡,選擇,排序。但是也提到了這些排序方法的缺陷。時間複雜度太高,在有大量資料需要排序的時候,會需要浪費太多的時間。所以在很多場景中是不適合使用。我們這次總結一種時間複雜度更優秀的希爾排序。希爾排序是以插入排序為基礎的改進版本。是由shell提出的方法。所以就叫...