希尔排序

来源:互联网 发布:氵淘宝网天猫商城 编辑:程序博客网 时间:2024/04/28 20:38

希尔排序是一个很难理解的排序,它是插入排序的一种表现形式。希尔排序是一种高效的排序,它将数据排成接近升序,在按插入排序,这样的排序很高效。

第一种代码实现是用一个do….while 循环;
第二种用两个while循环;

void display (int *a, int len){    int i;    for (i = 0; i < len; i++)        printf("%4d", a[i]);    printf ("\n");}int main(){    int a[10] = {5,6,7,8,9,0,34,1,3,2};    int len = sizeof(a)/sizeof(s[0]);    int i,j,get;    int d = len;   //d代表每一次的步长    do    {        d = d/3 + 1;        for (i = d; i < len; i++)        {            for (i = d; i < len; i++)            {                get = a[i];                j = j - d;            }            a[j+d] = get;        }    }wwhile (d > 1);    display (a, len);    return 0;}
int main (){    int a[10] = {5,6,7,8,9,0,34,1,3,2};    int len = sizeof(a) / szieof(a[0]);    int i,j,get;    int d = 0;  //代表每一步的步长    while (d < len)    {        d = d * 3 +1;  // 0 1 4 13    }    while (d >= 1)    {        for (i = d; i < len; i++)        {            get = a[i];            j = j - d;            while (j >= 0 && a[j] > get)            {                a[j+d] = a[j];                j -= d;            }            a[j+d] = get;        }        d = (d-1) / 3;   //4 1 0    }    display (a, len);    return 0;}
原创粉丝点击