希尔排序

#希尔排序

  • 有点喵喵的排序
  • 1.需要步长d0来分组,组内的元素在原数组中相隔为d0,
  • 2.进行组内插入排序
  • 3.所有组排完序后,改变步长d0->d1,一般d1小于d0
  • 4.最后一次步长一般为1,此时基本排序完成
  • 详情见vs中,排序小算法
  • #代码实现

    虽然但是,我还是把代码粘在这里吧

    //希尔排序

    void XierSort(int arr[], int num)

    {

    int dk = 0;

    int i = 0, j = 0, temp;

    for (dk = num/2; dk >= 1; dk /= 2)

    {

    for (i = dk; i < num; i++)

    {

    if (arr[i] < arr[i - dk])

    {

    temp = arr[i];

    for (j = i - dk; j >= 0 && arr[j] > temp; j-=dk)

    {

    arr[j + dk] = arr[j];

    }

    arr[j + dk] = temp;

    }

    }

    }

    }