zoukankan      html  css  js  c++  java
  • 实习之路--点滴积累五_希尔

    接下来说说希尔排序。

    原理:

    (1)将数组分为多个组,每个组的组内的元素位置相隔一个“增量”

    (2)对每个组进行插入排序

    (3)将“增量”值减少,然后循环

    需要说明的是:

    (1)“增量”值的选择问题,最后一个一定是1,比如,可以为,5、3、1或者5、2、1

    代码如下:

     1 void Shell_Sort(long *p, long n)
     2 {
     3     long gap = n / 2;
     4     while (gap)
     5     {
     6         for (long i = 0; i < gap; i++)
     7         {
     8             for (long j = i + gap; j < n; j += gap)
     9             {
    10                 if (p[j] < p[j - gap])
    11                 {
    12                     int k = j - gap;
    13                     int temp = p[j];
    14                     while ( k >= 0 && temp < p[k])
    15                     {
    16                         p[k + gap] = p[k];
    17                         k -= gap;
    18                     }
    19                     p[k + gap] = temp;
    20                 }
    21             }
    22         }
    23         gap /= 2;
    24     }
    25 }

    测试用例:

    1 int main()
    2 {
    3     long s[] = { 3, 8, 1, 9, 10, 4, 2, 7, 5, 6 };
    4     Shell_Sort(s, 10);
    5     for (long i = 0; i < 10; i++) cout << s[i] << ends << ends;
    6     return 0;
    7 }

    实验截图:

  • 相关阅读:
    tp文件上传
    tp5与页面链接
    tp5语法查询
    tp5基本增删改查
    tp5基本登录
    数据修改
    文件上传。判断。一维二维数组
    数据库连接
    php针对于数据库的改变
    php数据库连接
  • 原文地址:https://www.cnblogs.com/casparzheng/p/4374150.html
Copyright © 2011-2022 走看看