希尔排序 (ShellSort)

2014-11-24 03:12:44 · 作者: · 浏览: 0

//希尔排序算法

//希尔排序算法[cpp] view plaincopyprint
#include
#include
using namespace std;


int data[] = { 23, 34, 523, 421, 31, 3465, 4, 2341 };
const int n = sizeof(data) / sizeof(int);


//希尔排序
//取间隔d的数进行排序,然后缩小d的范围,直到d<=0,d的范围取值d=(d+1)/2;
void ShellSort(int left,int right)
{
int len = right-left+1;
int d=len;
while(d>1)
{
d=(d+1)/2;
for(int i=left;i {
if(data[i+d] {
int tmp = data[i+d];
data[i+d]=data[i];
data[i] = tmp;
}
}
}
}


int main()
{
ShellSort(0,n-1);
for(int i=0;i {
printf("%d\t",data[i]);
}
return 0;
}

#include
#include
using namespace std;


int data[] = { 23, 34, 523, 421, 31, 3465, 4, 2341 };
const int n = sizeof(data) / sizeof(int);


//希尔排序
//取间隔d的数进行排序,然后缩小d的范围,直到d<=0,d的范围取值d=(d+1)/2;
void ShellSort(int left,int right)
{
int len = right-left+1;
int d=len;
while(d>1)
{
d=(d+1)/2;
for(int i=left;i {
if(data[i+d] {
int tmp = data[i+d];
data[i+d]=data[i];
data[i] = tmp;
}
}
}
}


int main()
{
ShellSort(0,n-1);
for(int i=0;i {
printf("%d\t",data[i]);
}
return 0;
}