美文网首页
js版希尔排序

js版希尔排序

作者: 凌晨四点打铁匠 | 来源:发表于2022-03-21 15:59 被阅读0次

希尔排序

1959年Shell发明,第一个突破O(n2)的排序算法,是简单插入排序的改进版。它与插入排序的不同之处在于,它会优先比较距离较远的元素。希尔排序又叫缩小增量排序。

希尔排序原理图解:

希尔排序图解

接下来直接上代码:

function sort(list) {

  let len = list.length;
  // 初始增量为数组的一半
  let gap = Math.floor(len / 2);

  while(gap > 0) {
    // 内部使用插入排序
    for(let i = gap; i < len; i++) {
      let m = list[i];
      let j = i;

      while(j - gap >= 0) {
        let n = list[j - gap];
        if (m < n) {
          list[j - gap] = m;
          list[j] = n;
        }
        j -= gap;
      }
    }
    gap = Math.floor(gap / 2);
  }
}

相关文章

  • js版希尔排序

    希尔排序 1959年Shell发明,第一个突破O(n2)的排序算法,是简单插入排序的改进版。它与插入排序的不同之处...

  • 排序算法(二):希尔排序

    希尔排序是插入排序的优化版,其算法表示如下:

  • JavaScript 实现希尔排序

    原理 希尔(Shell)排序又称为缩小增量排序,它是一种插入排序。它是直接插入排序算法的一种威力加强版。 希尔排序...

  • 排序:希尔排序

    原理 希尔排序是插入排序的升级版。当我们谈论希尔排序时我们先谈下插入排序。已知插入排序是从数组左端开始遍历,将使得...

  • 【数据结构】希尔排序

    希尔排序,相当于插入排序的升级版。 希尔排序又称“缩小增量排序”,他也是一种属插入排序类的方法,但在时间效率上对于...

  • js算法排序-希尔排序

  • 排序:希尔排序

    希尔排序就是增强版的选择排序,插入排序是依次进行插入比较.希尔排序则是选择增量间隔进行比较,这样就可以节省时间效率...

  • 希尔排序

    希尔排序 希尔排序是升级版的插入排序,也叫缩小增量排序。时间复杂度是O(nlog2n),是不稳定的算法 1.如何确...

  • JS算法笔记 - 排序

    冒泡排序 改进冒泡排序 选择排序 快速排序 在JS中相对较快 插入排序 改进:二分插入排序 希尔排序 动态定义间隔...

  • JS实现希尔排序

    希尔排序本质上是一种插入排序,但是对数列进行了等间隔分组处理,在每一组中做插入排序,这一优化使得原本 O(n^2)...

网友评论

      本文标题:js版希尔排序

      本文链接:https://www.haomeiwen.com/subject/hmltjrtx.html