C++实现简单的希尔排序Shell Sort实例
本文以实例形式讲述了基于C++实现简单的希尔排序ShellSort的方法,是一个很经典的算法,具体实现代码如下:
#include<iostream>
usingnamespacestd;
voidShellSort(int*iArray,intlength)
{
//初始化jump等于length
intjump=length;
//标记本趟检测是否进行了交换,
//若进行了则还有下次从头开始的检测,
//否则停止,继续改变jump的值做另一趟排序
boolisSwap;
while(jump!=0)
{
//jump每次/2
jump=jump/2;
do{
inti=1;
//初始化表示没有进行交换
isSwap=false;
while(i<=length-jump)
{
if(iArray[i]>iArray[i+jump])
{
inttemp=iArray[i];
iArray[i]=iArray[i+jump];
iArray[i+jump]=temp;
isSwap=true;
}
i++;
}
}while(isSwap==true);//如果进行了交换说明增量为jump的序列
//可能存在不是有序的在检测一遍
//否则说明增量为jump的序列是有序的
}
}
intmain()
{
intiArray[]={0,50,123,36,25,200,36,95,70,14,10,321,1,3,5,8};
ShellSort(iArray,15);
for(inti=1;i<=15;i++)
{
cout<<iArray[i]<<"";
}
cout<<endl;
return0;
}