希尔排序:
一趟一个增量,用增量用来分组,组内执行插入排序
#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;
}
结果:

希尔排序的性能:

本文深入解析了希尔排序算法的实现原理,展示了如何通过不断缩小增量进行组内插入排序,以达到高效排序的效果。提供了完整的C++代码示例,帮助读者理解希尔排序的具体操作流程。

被折叠的 条评论
为什么被折叠?



