資料結構 直接插入排序與希爾排序

2021-10-19 17:34:03 字數 1320 閱讀 7271

直接插入排序是一種簡單的插入排序法,其基本思想是:把待排序的記錄按其關鍵字碼值的大小逐個插入到乙個已經排好序的有序序列中,直到所有的記錄插入完為止,得到乙個新的有序序列。

當插入第i(i

>=1

)i(i>=1)

i(i>=1

)個元素時,前面的array[0]、array[1]、…、array[i-1]已經排好序,此時用array[i]的排序碼與array[i-1]、array[i-2]、…的排序碼順序進行比較,找到插入位置即將array[i]插入,原來位置上的元素順序後移。

/*直接插入排序

*/void

insertsort

(int

* arr,

int n)

arr[end +1]

= data;

}}

void

testinsertsort()

;int n =

sizeof

(arr)

/sizeof

(arr[0]

);insertsort

(arr , n)

;for

(int i =

0; i < n; i++)}

intmain()

希爾排序法又稱縮小增量法。希爾排序的基本思想是:先選定乙個整數n,把待排序檔案中所有記錄分成n個組,所有距離為n的記錄分在同一組內,並對每一組內的記錄進行排序。然後,重複上述分組和排序的工作,當n=1時,所有記錄在統一組內排好序。

#include

#include

/*希爾排序

*/void

shellsort

(int

* arr,

int n)

arr[end + gap]

= data;}}

}

void

testshellsort()

;int n =

sizeof

(arr)

/sizeof

(arr[0]

);shellsort

(arr, n)

;for

(int i =

0; i < n; i++)}

intmain()

直接插入排序與希爾排序

package basicknowledge.sort program summary author peicc create 2019 07 18 16 46 07 插入排序 將未排序的資料插入到已排序的資料系列之中 時間複雜度o n2 1 2 3 n 1 最優 o n 陣列有序,每次只需比較不成...

插入排序 直接插入排序與希爾排序

插入排序 insertion sort 的基本思想是 每次將乙個待排序的記錄,按其關鍵字大小插入到前面已經排好序的子檔案中的適當位置,直到全部記錄插入完成為止。本節介紹兩種插入排序方法 直接插入排序和希爾排序。直接插入排序基本思想 1 基本思想 假設待排序的記錄存放在陣列r 1.n 中。初始時,r ...

直接插入排序 希爾排序

一.直接插入排序 原理 將陣列分為無序區和有序區兩個區,然後不斷將無序區的第乙個元素按大小順序插入到有序區中去,最終將所有無序區元素都移動到有序區完成排序。最優複雜度 當輸入陣列就是排好序的時候,複雜度為o n 而快速排序在這種情況下會產生o n 2 的複雜度。最差複雜度 當輸入陣列為倒序時,複雜度...