七大排序演算法 直接插入排序及折半優化

2021-08-20 15:37:04 字數 816 閱讀 5378

思路分析

將乙個待排序元素,按其大小,插入到前面已經排好序的一組元素的合適位置上去,直到元素全部插完為止。

簡單來說:end指已經排好陣列的最後乙個元素,end找到插入的位置(設定乙個temp,temp為已經排序好陣列的下乙個元素),用temp與end比較,如果temp

**實現

void insertsort(int

array, int size)

array[end + 1] = temp;

}}int main()

; insertsort(array, 10);

for (; n < 10; n++)

return

0;}

優化:二分查詢直接排序

當陣列長度過大的時候,找到要插入的位置會消耗大量資源,使用二分查詢可以更快的找到插入位置。

/直接插入排序二分法

void insertsort(int

array, int size)

else

}while (end >= 0 && end >= left)

array[end + 1] = temp;

}}int main()

; insertsort(array, 10);

for (; n < 10; n++)

return

0;}

七大排序之直接插入排序

整個區間被分為有序區間和無序區間,可以讓陣列的第乙個資料充當有序區間,其他是無序區間,每次將無序區間的第乙個數和有序區間最後乙個數作比較,如果無序區間的數比有序區間的數小,從有序區間的最後乙個數開始比較,直到這個數大於有序區間的數或者下標是 0 停止 如果要比較的數大於有序區間的最後乙個數,則不比較...

直接插入排序 改進演算法 折半插入排序

這種改進是從比較次數入手的,並沒用減少移動的次數 include define maxsize 20 typedef int keytype typedef struct sqlist void createsqlist sqlist l l.length n void display sqlist...

直接插入排序和折半插入排序演算法

直接插入排序 insertion sort 的基本思想是 每次將乙個待排序的記錄,按其關鍵字大小插入到前面已經排好序的子串行中的適當位置,直到全部記錄插入完成為止。設陣列為a 0 n 1 1.初始時,a 0 自成1個有序區,無序區為a 1.n 1 令i 1 2.將a i 併入當前的有序區a 0 i ...