免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 816 | 回复: 0
打印 上一主题 下一主题

希尔排序 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-12-28 21:31 |只看该作者 |倒序浏览
希尔排序算法:
#include stdio.h>
#include string.h>
#define less(m, n) (m  n)
int a[] =
{
    10, 1, 2, 10, 3,
    6, 7, 8, 3, 1,
    0, 5, 3, 9, 11,
    12, 20, 9, 8, 10
};
void sort_print(void)
{
    int i;
    int len = sizeof(a) / 4;
    printf("[ ");
    for(i = 0;i len; i++) printf("%d ", a);
    printf("]\n");
}
void sort_shell(int n)
{
    int i, j, h;
    n -= 1;
    printf("----------------------------------------------------------------------\n");
    printf(" h-list: [ ");
    for (h = 1; h = n/9; h = 3*h+1) printf("%d ", h);
    printf("%d ]\n", h);
    printf("----------------------------------------------------------------------\n");
    printf(" origin data: ", h);
    sort_print();
    printf("----------------------------------------------------------------------\n");
    for ( ; h > 0; h /= 3)
    {
        printf("* h-sort when h = %d\n", h);
        printf("----------------------------------------------------------------------\n");
        for (i = h; i = n; i++)
        {
            int j = i;
            int v = a;
            printf("** i = %d", i);
            printf(" exch: %d",j);
            while (j >= h && less(v, a[j-h]))
            {
                a[j] = a[j-h];
                j -= h;
                printf("->%d", j);
            }
            printf("\n");
            a[j] = v;
            printf("*** ");
            sort_print();
            printf("----------------------------------------------------------------------\n");
        }
    }
    printf(" final data: ", h);
    sort_print();
    printf("----------------------------------------------------------------------\n");
}
int main()
{
    int n = sizeof(a) / 4;
    sort_shell(n);
    return 0;
}


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/99982/showart_2133569.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP