插入排序 希爾排序

2021-08-25 06:06:40 字數 981 閱讀 5562

直接插入排序

直接插入排序的過程可以理解為乙個固定長度的陣列被分為兩個集合,即已排序集合和未排序。

開始時已排序集合為空,而未排序集合即為整個陣列。當排序開始後插入乙個物件,已排序集合元素數目加1,相應地未排序集合元素數目減1,重複插入過程直至將未排序集合清空為止,這時排序集合就是最終結果。如下圖:

希爾排序是一種按照增量排序的方法。其中增量值是小於n的正整數。

shell排序的基本思想[1]是:

(1)初始增量為3,該陣列分為三組分別進行排序。(初始增量值原則上可以任意設定(0(2)將增量改為2,該陣列分為2組分別進行排序。

(3)將增量改為1,該陣列整體進行排序

#include

int a[9] = ;

void insertsort(int a, int n);

void print(int a,int n);

void shell_sort(int a, int n);

int main()

;insertsort(a, 9);

print(a,9);

std::cout << std::endl;

shell_sort(a, 9);

print(a, 9);

return 0;

}//插入排序 直插

void insertsort(int a, int n)}}

void print(int a,int n)

//std::cout << "sdjkf:" << sizeof(a);

//shell 插入排序

void shell_sort(int a, int n)}}

}}

插入排序 希爾插入排序

本文借鑑於lsgo實驗室創始人馬老師 演算法 希爾插入排序 delta len nums 2 while delta 0 shell delta,nums delta delta 2return nums defshell delta,key for i in range delta,len key...

插入排序 希爾排序

我們知道當乙個序列基本有序時,直接插入會變得很高效。因為此時只需少量的移動元素,操作集中在元素的比較上。基於這種想法,我們就試圖把乙個序列在進行直接插入前調整得盡量有序。這就是希爾排序 shell sort 的核心思路。shell只是演算法發明者的名字,無特殊含義 那到底該怎麼做呢?希爾排序一反以前...

插入排序 希爾排序

希爾排序 先將整個待排序的記錄序列分割成為若干子串行分別進行直接插入排序,待整個序列中的記錄 基本有序 時,再對全體記錄進行依次直接插入排序。以n 10的乙個陣列49,38,65,97,26,13,27,49,55,4為例 第一次 gap 10 2 5 4938 6597 2613 2749554 ...