前端-折半插入排序

  1. 折半插入排序
    • 先使用二分法查找出该插入的位置, 再进行移动
function ZheBanSort(arr) {
  const len = arr.length;
  let i, j, low, high, mid, temp;
  // 首先找到插入点 二分法
  for (i = 1; i < len; i++) {
    // 保存当前元素
    temp = arr[i];
    low = 0;
    high = i - 1;
    // 依次将A[1]~A[n-1] 插入到`前面已经排好序`的数组中
    while (low <= high) {
      // 不能直接使用3/2 因为3/2=1.5
      mid = parseInt((low + high) / 2)
      if (arr[mid] > temp) {
        high = mid - 1
      } else {
        low = mid + 1;
      }
    }
    // 统一往后移动元素
    for (j = i - 1; j >= high + 1; j--) {
      arr[j + 1] = arr[j]
    }
    arr[high + 1] = temp;
  }
}

const a = [5, 2, 4, 3, 8, 6, 9, 0, 1, 7];
ZheBanSort(a)
console.log(a)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、 单项选择题(共71题) 对n个元素的序列进行冒泡排序时,最少的比较次数是( )。A. n ...
    貝影阅读 9,433评论 0 10
  • 一些概念 数据结构就是研究数据的逻辑结构和物理结构以及它们之间相互关系,并对这种结构定义相应的运算,而且确保经过这...
    Winterfell_Z阅读 6,612评论 0 13
  • 时光的复刻中只留下了一个又一个叫做日子的东西,而我身处其中,一路跌跌撞撞、风尘仆仆,已经习惯了自己觅食,飞得高且远...
    无人问及阅读 192评论 0 1
  • 如夜 我侧卧烛光 读着你时隔千年的感伤 岁月无情而又沧桑 却无法抹去我对你痴痴的凝望 也许 唯美是一种残缺的哀伤 ...
    文静_5cc5阅读 291评论 0 0
  • 我是尘世中最干净的一滴水 在晨雾中醒来 在花海中流淌 在鸟鸣中欢唱 在温暖的阳光下奔向渴望的地方 我要留在茅台的故...
    唐伯虎点支烟阅读 247评论 0 0

友情链接更多精彩内容