插入排序和希爾 Shell 排序

2021-06-21 20:14:38 字數 669 閱讀 3186

【插入排序】

陣列前k-1個元素已經有序,如何確定第k個元素的插入位置,使得這k個元素有序。

方法1:從左到右掃瞄掃瞄這個有序子陣列,直到遇到第乙個大於等於a[k]的元素,然後把a[k]插在這個元素的前面。

方法2:從右到左掃瞄這個有序子陣列,直到遇到第乙個小於等於a[k]的元素,然後把a[k]插在這個元素的後面。

【希爾排序】

先將陣列分組,分別對每組進行插入排序,依次減少分組數進行插入排序,最後對分組數為1,即對整個陣列進行插入排序。

【**】

#include #include void insertionsort(int a, int n)

a[j + 1] = tmp; }}

void shellsort(int a, int n)

a[j + step] =tmp;

}}int main(void)

; int n = sizeof(a)/sizeof(int);

insertionsort(a, n);

shellsort(a, n);

for(int i = 0; i < n; i++)

printf("%d ", a[i]);

printf("\n");

return 0;

}

插入排序和希爾 Shell 排序

插入排序 陣列前k 1個元素已經有序,如何確定第k個元素的插入位置,使得這k個元素有序。方法1 從左到右掃瞄掃瞄這個有序子陣列,直到遇到第乙個大於等於a k 的元素,然後把a k 插在這個元素的前面。方法2 從右到左掃瞄這個有序子陣列,直到遇到第乙個小於等於a k 的元素,然後把a k 插在這個元素...

shell 希爾 排序和插入排序簡介

插入排序 考慮這樣一種情況 有乙個已經有序的資料序列,要求在這個已經排好的資料序列中插入乙個數,但要求插入後此資料序列仍然有序.插入排序的基本操作就是將乙個資料插入到已經排好序的有序資料中,從而得到乙個新的 個數加一的有序資料,演算法適用於少量資料的排序,時間複雜度為o n 2 是穩定的排序方法。插...

插入排序之希爾(shell)排序

希爾排序是1959 年由d.l.shell 提出來的,相對直接排序有較大的改進。希爾排序又叫縮小增量排序。基本思想 選擇乙個 增量序列 t1,t2,ti tj,tk,其中ti tj,tk 1 按增量序列個數k,對序列進行k 趟排序 每趟排序,根據對應的增量ti,將待排序列分割成若干長度為m 的子串行...