SHELL排序

来源:互联网 发布:北京金蝶软件 编辑:程序博客网 时间:2024/05/21 08:50

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

#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);}
0 0
原创粉丝点击