/*
* ShellSort.cpp
*
* Created on: 2013-6-1
* Author: jue
*/
#include <iostream>
using std::cout;
using std::endl;
void swap(int &a,int &b)
{
int temp = a;
a = b;
b = temp;
}
void shellSort(int datas[],int length)
{
int offset = length/2+1;
while(offset >= 1)
{
for(int i = 0; i< offset; i++)
{
int *s = &datas[i];
int index = i;
while(index + offset < length)
{
if(datas[index] <= datas[index + offset])
{
index += offset;
continue;
}
int *p1 = &datas[index];
while(p1 >= s)
{
if(*p1 <= *(p1+offset))
{
break;
}
swap(*p1,*(p1+offset));
p1 -= offset;
}
index+=offset;
}
}
offset/=2;
}
}
void display(int datas[], int length)
{
for(int i = 0; i < length; i ++)
{
cout<<" "<<datas[i];
}
cout<<endl;
}
int main(void)
{
int datas[] = {1,22,8,3,2,5,6,9,0};
shellSort(datas,9);
display(datas,9);
return 0;
}
排序算法-Shell sort
最新推荐文章于 2025-05-13 09:39:40 发布
