常見排序演算法 插入排序(希爾排序 直接插入排序)

2021-09-25 16:15:40 字數 1206 閱讀 9054

(一)簡介:

是一種最簡單的排序方法,其基本操作是將一條記錄插入到已排好的有序表中,從而得到乙個新的、記錄數量增1的有序表。

(二)時間空間複雜度

o(n^2)

o(1)

(三)實現思路

保證當前資料有序,依次插入新的資料,讓新的資料序列也有序。

(四)c++實現

#include#includeusing namespace std;

void insertionsort(int *arr, int len)

} }}int main();

int len = 10;

insertionsort(arr, len);

for (size_t i = 0; i < 10; i++)

system("pause");

return 0;

}

(一)簡介:

希爾排序,也稱遞減增量排序演算法,是插入排序的一種更高效的改進版本。希爾排序是非穩定排序演算法。

(二)時間、空間複雜度:

o(n^(1.3—2)):最好1.3次方最壞平方(插排)

o(1)

(三)實現思路

1.對當前資料按照一定的增量分組,增量的大小在工程上的習慣是gap = ( len / 3) + 1。

2.對劃分出的每一組分別進行直接插入排序,使得當前資料逐漸貼近有序。

3.把增量變小,重複前兩個步驟。

4.當增量減小到1之後,希爾排序就完成了。

(四)c++實現

#include#includeusing namespace std;

void shellsort(int *arr, int len)

}} }

return;

}int main();

int len = 10;

shellsort(arr, len);

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

system("pause");

return 0;

}

排序演算法 插入排序 希爾排序

1 相鄰資料之間相比較。先是1,0 然後2,1 1,0 以此類推 總結 大for從1 n 小for從i 0,之後判斷交換即可 public void charusort for int i 1 i a.length i 2 希爾排序是插入排序特殊化,他不再比相鄰資料,而是可以比較類似1,4,13.的...

插入排序演算法 希爾排序

插入排序演算法 希爾排序 希爾排序思想是將陣列每次分成不同的陣列同時進行排序,劃分的方式是設定增量值,即h length 2,h 2 與直接排序最大的不同就是比較的陣列值下標間隔不同。希爾排序在資料量龐大的時候進行排序效率高,時間短。觀察下圖,根據以上思想,進行移動。如下 include void ...

插入排序 希爾插入排序

本文借鑑於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...