swap(a[++index],a[j]);
Display(a,10);
}
swap(a[low],a[index]);
QuickSort(a,low,index-1);
QuickSort(a,index+1,high);
}
//希尔排序
voidMoveStep(inta[],intstart,intend,intdata,intstep)
{
inti;
for(i=end;i>=start;i=i-step)
{
a[i+step]=a[i];
}
a[start]=data;
//MoveStep(a,i,j-dk,a[j],dk);
}
voidShellSort(inta[],intn)
{
int*step,k,i,t,dk,j;
k=n;
step=(int*)malloc(sizeof(int)*(n/2));
i=0;
do
{
k=k/2;
step[i++]=k;
}while(k>0);
i=0;
while(dk=step[i++]>0)
{
for(i=1;i<=n;i++)
{
for(j=i+dk;j<=n;j=j+dk)
{
for(k=i;k<=(j-dk);k=k+dk)
if(a[k]>a[j])
{
//插入
MoveStep(a,k,j-dk,a[j],dk);
}
}
}
}
}
//堆排序
voidmain()
{
inta[11]={-1,22,1,54,47,9,10,3,2,12,6};
inti;
cout<<"原数据:
"<Display(a,10);
cout<//BubbleSort(a,10);
//cout<"<//Display(a,10);
//SelectSort(a,10);
//cout<"<//Display