希尔/shell排序

来源:互联网 发布:无敌邮件营销软件 编辑:程序博客网 时间:2024/05/22 12:19
  • 题目:采用希尔排序对一组无序元素由小到大排序
    实现代码
void ShellSort(int *arr, int size)//希尔排序{    if (NULL == arr || size <= 0)        return;    int gap = size;    while (gap > 1)    {        gap = gap / 3 + 1;        for (int idx = gap; idx < size; idx += gap)        {            int start = idx - gap;//用idx+gap的话就会越界            int temp = arr[idx];            while (start >= 0 && arr[start] > temp)//241//用if的话只能拍成214要用循环            {                arr[start+gap] = arr[start];                start -= gap;            }            arr[start + gap] = temp;//循环出来end已经多减了一个gap        }    }}
原创粉丝点击