您的位置:首页 > 运维架构 > Shell

SHELL排序

2015-08-31 19:37 507 查看

希尔排序:它是一种对插入排序的改进,减少了比较次数,提高了效率

#include <iostream>
using namespace std;

extern void print_o(int *, int);

void shell_sort(int *a, int len)
{
int i, j, temp, n;

n = len/2;

while(n!=0)
{
for(i=n; i<len; i++)
{
temp = a[i];    //!!!!

for(j=i-n; j>=0; j -= n)
{
if(a[j]>temp)
a[j+n] = a[j];
else
break;
}

//至此已经确定了j的位置
a[j+n] = temp;

//测试所用print_o(a, len);
//同上cout << "n: " << n << endl << endl;
}

n /= 2;//每次循环都减少偏移
}
}

int main()
{
int a[7] = {3,7,0,9,1,4,2};
int len = sizeof(a)/sizeof(int);

print_o(a, len);//测试遍历所用
shell_sort(a, len);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: