#include <iostream>
using namespace std;
#define MAX 16
void shellSort(int *data,int n)
{
int d;
int temp;
int i,j;
d=temp=i=j=0;
d=n/2;
while(d>=1)
{
//以位置开始往后进行递增//
for (i=d; i<n; i++)
{
j=0;
temp=data[i];
j=i-d;
//这是以位置开始往前进行排序//
while (j>=0)
{
if (data[j]>temp)
{
data[j+d]=data[j];
break;
}
//记得要考虑等于的情况,否则将会是错误的//
else if(data[j]<=temp)
{
data[j+d]=temp;
break;
}
j=j-d;
}
if (j<0)
{
data[j+d]=temp;
}
}
d=d/2;
}
}
int main(int argc,char **argv)
{
int data[MAX]={12,34,21,12,5,6,7,12,3,12,90,80,89,78,89,89
};
int n=MAX;
int i;
cout<<"didn't sort is:";
for (i=0; i<n; i++)
{
cout<<data[i]<<" ";
}
cout<<endl;
shellSort(data,n);
cout<<"sort is:";
for (i=0; i<n; i++)
{
cout<<data[i]<<" ";
}
cout<<endl;
return 0;
}
哈希排序
最新推荐文章于 2025-03-21 15:36:22 发布