希尔排序

来源:互联网 发布:阿尔玛卡尔玛 知乎 编辑:程序博客网 时间:2024/06/03 20:15
  1. 希尔排序是基于插入排序的快速的排序算法
  2. 其思路如下:
    • 将输入数据分为div+1组(增量为div),对于每组进行插入排序
    • 然后缩小div=div/2,重复上一步,直至div<1结束
void swapInt(int *a, int *b){    int c = *a;    *a = *b;    *b = c;}void shellSort(int *data, unsigned int len){    if (len <= 1 || data == NULL)        return;    for (int div = len / 2; div >= 1; div = div / 2)//定增量div,并不断减小    {        for (int i = 0; i <= div; ++i)//分组成div+1组        {            for (int j = i; j < len - div; j += div)//对每组进行插入排序                for (int k = j; k < len; k += div)                    if (data[j] > data[k])                        swapInt(data + j, data + k);//交换两个数的值,        }    }}
原创粉丝点击