JavaScript实现 插入排序 算法(INSERTION-SORT)

   日期:2020-09-27     浏览:95    评论:0    
核心提示:JavaScript实现插入排序 算法(INSERTION-SORT)

JavaScript实现 插入排序 算法(INSERTION-SORT)

插入排序介绍

算法导论:对于少量的元素,它是一种有效的算法。插入排序的工作方式像许多人排序一手扑克牌。开始时,我们的左手为空并且桌子上的牌面朝下。然后我们每次从座子上拿走一张扑克牌并将它插入左手中正确的位置,我们从右到左将它与已在手中的牌进行比较。拿在左手上的牌总是排序好的,原来这些牌是桌子上牌堆中顶部的牌。

伪代码实现

INSERTION-SORT(A)
// Note that i is the index of Array A which is from zero not one 
// if from one ,next line will be `for i = 2 to A.length`
    for i = 1 to A.length - 1
         key = A[i]
         j = j - 1
   //Insert A[i] into the sorted sequence A[1..i-1]
    while j > 0 and A[j] > key
	      A[j+1] = A[j]
	      A[j] = key
	      j = j - 1

JavaScript实现

// 内部使用 while 实现
function insertionSort(arr) { 
  // 当数组中最多只有一个元素时,无需进行排序
  if (arr.length > 1) { 
    // 第一个元素是起始位置不用进行排序,直接从第二个元素开始比较
    for (let i = 1; i < arr.length; i++) { 
      // key , i 分别是当前需要排序的元素的值 和 索引
      const key = arr[i];
      //从已排数组的最右边开始比较
      let j = i - 1;
      //当已排序元素的值大于可以时交换位置
      while (j >= 0 && arr[j] > key) { 
        arr[j + 1] = arr[j];
        arr[j] = key;
        j = j - 1;
      }
    }
  }
  return arr;
}
//内部使用for循环实现
function insertionSort(arr) { 
  // 当数组中最多只有一个元素时,无需进行排序
  if (arr.length > 1) { 
    // 第一个元素是起始位置不用进行排序,直接从第二个元素开始比较
    for (let i = 1; i < arr.length; i++) { 
      // key,i分别是当前需要排序的元素的值 和 索引
      const key = arr[i];
      //从已排数组的最右边开始比较

      //当已排序元素的值大于可以时交换位置
      for (let j = i - 1; j >= 0; j--) { 
        // 如果key值比要比较的值大,则表示排序完成,此时直接跳出循环
        if (key > arr[j]) { 
          break;
        }
        arr[j + 1] = arr[j];
        arr[j] = key;
      }
    }
  }
  return arr;
}


 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服