第二章 :查詢與排序-------希爾排序
希爾排序:
一趟一個增量,用增量用來分組,組內執行插入排序
#include<iostream>
using namespace std;
void shellSort(int arr[],int length){
//不斷地縮小增量
for(int interval=length/2;interval>0;interval/=2){
/*
//增量為1的插入排序
for(int i=1;i<length;i++){
int target=arr[i];
int j=i-1;
while(j>-1&&target<arr[j]){
arr[j+1]=arr[j];
j--;
}
arr[j+1]=target;
}
*/
//從i=增量開始,組內插入排序
for(int i=interval;i<length;i++){
int target=arr[i];
int j=i-interval;
while(j>-1&&target<arr[j]){
arr[j+interval]=arr[j];
j-=interval;
}
arr[j+interval]=target;
}
}
}
int main(){
int arr[]={1,5,2,8,3,5,9};
int len=7;
shellSort(arr,len);
for(int i=0;i<len;i++){
cout<<arr[i]<<" ";
}
return 0;
}
結果:
希爾排序的效能:
相關文章
- 第二章 :查詢與排序---------遞迴、查詢與排序補充排序遞迴
- 希爾排序排序
- 理解希爾排序排序
- Java希爾排序Java排序
- 希爾排序(一)排序
- 希爾排序(二)排序
- 排序演算法__希爾排序排序演算法
- 【排序演算法】- 希爾排序排序演算法
- 希爾排序——重溫排序(二)排序
- 【排序】插入類排序—(折半)插入排序、希爾排序排序
- 希爾排序(Shell Sort)排序
- C++希爾排序C++排序
- 希爾排序(C++)排序C++
- PHP 排序演算法之希爾排序PHP排序演算法
- 第二章 :查詢與排序-------遞迴形式進行插入排序排序遞迴
- 排序演算法 - 快速插入排序和希爾排序排序演算法
- 排序演算法(氣泡排序,選擇排序,插入排序,希爾排序)排序演算法
- 排序演算法:Java實現希爾排序排序演算法Java
- 第二章 :查詢與排序-------二分查詢的遞迴解法排序遞迴
- 第二章 :查詢與排序-------2.15 分析10種排序演算法的穩定性排序演算法
- JavaScript希爾排序簡單介紹JavaScript排序
- rust-algorithms:14-希爾排序RustGo排序
- 三種插入排序 直接插入排序,折半插入排序,希爾排序排序
- 七、排序,選擇、冒泡、希爾、歸併、快速排序實現排序
- 【演算法】希爾排序的實現演算法排序
- python實現希爾排序演算法Python排序演算法
- 【PHP資料結構】插入類排序:簡單插入、希爾排序PHP資料結構排序
- python演算法與資料結構-希爾排序(35)Python演算法資料結構排序
- 排序和查詢排序
- 【資料結構與演算法】高階排序(希爾排序、歸併排序、快速排序)完整思路,並用程式碼封裝排序函式資料結構演算法排序封裝函式
- 第三章:查詢與排序(下)----------- 3.20桶排序排序
- Python八大演算法的實現,插入排序、希爾排序、氣泡排序、快速排序、直接選擇排序、堆排序、歸併排序、基數排序。Python演算法排序
- 程式猿修仙之路--演算法之希爾排序演算法排序
- 【譯】Swift演算法俱樂部-希爾排序Swift演算法排序
- 基礎演算法系列 之希爾排序演算法排序
- 第三章:查詢與排序(下)----------- 3.19 計數排序排序
- 第三章:查詢與排序(下)----------- 3.21基數排序排序
- 第二章 :查詢與排序-------遞迴經典問題——漢諾塔問題排序遞迴