【算法题】希尔排序

来源:互联网 发布:爱淘宝 红包 编辑:程序博客网 时间:2024/06/06 08:47

希尔排序是基于插入排序的两个性质而提出改进方法的:

  • 插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率。
  • 但插入排序一般来说是低效的,因为插入排序每次只能将数据移动一位

void shellsort(int * array, int len){    int i, j, h, tmp;    for (h = len / 2; h > 0; h = h / 2)//每个步长    {        for (i = h; i < len; ++i)//其实是每个组交替插排        {            tmp = array[i];            for (j = i - h; j >= 0;j -= h)//当前元素按步长 向左移动插入            {                if (array[j]>tmp)                {                    array[j + h] = array[j];                }                else                {                    break;                }            }            array[j+h] = tmp;        }    }}int main(){    int array[5] {3, 2, 5, 1, 2};    ShellSort(array, 5);    return 0;}

原创粉丝点击