排序算法——希尔排序

一、介绍:

希尔排序是一种可以减少插入排序中数据比较次数的排序算法,加速算法的进行,排序的原则是将数据区分为特定步长的小区块,然后以插入排序算法对小区块内部进行排序,经历过一轮排序则减少步长,直到所有数据都排序完成。

演示:

首先步长step的值是用待查找的数据长度决定的,初始值为step = 待查找数据的长度/2

视频演示:

希尔排序更多实用攻略教学,爆笑沙雕集锦,你所不知道的游戏知识,热门游戏视频7*24小时持续更新,尽在哔哩哔哩bilibili 视频播放量 107、弹幕量 1、点赞数 0、投硬币枚数 0、收藏人数 1、转发人数 0, 视频作者 浅陌95sss, 作者简介 记录自己的学习成果,分享自己的快乐,相关视频:快速排序,冒泡排序演示,选择排序演示,学习记录--循环列表,直接插入排序演示,学习记录--网络状态机实现,学习记录--设计模式之命令模式,排行榜模拟,学习记录--Rpg雷达图,学习记录--BFS寻路算法https://www.bilibili.com/video/BV1eS4y15761/?spm_id_from=333.999.0.0运行代码:

cs 复制代码
  void ShellSort(int[] data)
  {
      int step = data.Length / 2;
      int preIdx , current = 0;
      while (step > 0)
      {
          for (int i = step; i < data.Length; i++)
          {
              preIdx = i - step;
              current = data[i];

              while (preIdx >= 0 && data[preIdx] > current)
              {
                  data[preIdx + step] = data[preIdx];
                  preIdx -= step;
              }
              data[preIdx + step] = current;
          }
          step = step / 2;
      }
  }
cs 复制代码
 void ShellSort2(int[] data)
 {
     int step = data.Length / 2;
     int preIdx, current = 0;
     while (step > 0)
     {
         for (int i = 0; i < data.Length - step; i +=step)
         {
             preIdx = i;
             current = data[i + step];

             while (preIdx >= 0 && data[preIdx] > current)
             {
                 data[preIdx + step] = data[preIdx];
                 preIdx -= step;
             }
             data[preIdx + step] = current;
         }
         step = step / 2;
     }
 }
相关推荐
做怪小疯子14 小时前
LeetCode 热题 100——子串——和为 K 的子数组
算法·leetcode·职场和发展
zl_vslam15 小时前
SLAM中的非线性优-3D图优化之李群李代数在Opencv-PNP中的应用(四)
人工智能·opencv·算法·计算机视觉
Run_Teenage18 小时前
C++:智能指针的使用及其原理
开发语言·c++·算法
mit6.82419 小时前
二维差分+前缀和
算法
民乐团扒谱机19 小时前
自然的算法:从生物进化到智能优化 —— 遗传算法的诗意与硬核“
算法
希望有朝一日能如愿以偿19 小时前
力扣每日一题:仅含1的子串数
算法·leetcode·职场和发展
漂流瓶jz20 小时前
SourceMap数据生成核心原理:简化字段与Base64VLQ编码
前端·javascript·算法
今天的砖很烫20 小时前
ThreadLocal 中弱引用(WeakReference)设计:为什么要 “故意” 让 Key 被回收?
jvm·算法
苏小瀚20 小时前
算法---FloodFill算法和记忆化搜索算法
数据结构·算法·leetcode
苏小瀚20 小时前
算法---二叉树的深搜和回溯
数据结构·算法