ITPub博客

首页 > IT职业 > IT职场 > 常见排序算法之JavaScript实现

常见排序算法之JavaScript实现

IT职场 作者:youyou0 时间:2021-09-09 09:06:07 0 删除 编辑

作者:河马 链接:https://zhuanlan.zhihu.com/p/28130533

1.冒泡排序

基本思路:

1.依次比较相邻的两个数,如果第一个比第二个小,不变。如果第一个比第二个大,调换顺序。一轮下来,最后一个是最大的数。
2.对除了最后一个之外的数重复第一步,直到只剩一个数。

图形展示:
图片描述

代码:

function bubbleSort(myArray){
  var len = myArray.length;
  var i;
  var j;
  var stop;

  for (i = 0; i  myArray[j + 1]){
        swap(myArray, j, j + 1);
      }
    }
  }
  return myArray;
}

function swap(myArray, p1, p2){
  var temp = myArray[p1];
  myArray[p1] = myArray[p2];
  myArray[p2] = temp;
}

2.选择排序

基本思路:

1.找出最小的数,和第一个交换位置。
2.在剩下的数中,找出最二小的数,放在第二个。
3.依次类推,排出顺序。

图形展示:
图片描述

代码:

function selectionSort(myArray){

    var len = myArray.length,
        min;

    for (i = 0; i 

3.插入排序

基本思路:

1.把数组分为[已排序]和[未排序]两部分,第一个数为[已排序],其余为[未排序]。
2.从[未排序]抽出第一个数,和[已排序]部分比较,插入到合适的位置。

图形展示:
图片描述

代码:

function insertionSort(myArray) {

    var len = myArray.length,     // 数组的长度
        value,                      // 当前比较的值
        i,                          // 未排序部分的当前位置
        j;                          // 已排序部分的当前位置

    for (i=0; i  -1 && myArray[j] > value; j--) {
            myArray[j+1] = myArray[j];
        }

        myArray[j+1] = value;
    }

    return myArray;
}

4.合并排序(分而治之)

基本思路:

1.不断将数组对半分,直到每个数组只有一个。
2.将分出来的部分重新合并。
3.合并的时候按顺序排列。

图片展示:

图片描述

代码:

// 被拆分的数组重新合并
function merge(left, right) {
    var result = [],
        left_index = 0,
        right_index = 0;

    // 将两个数组合并
    // 合并的时候按从小到大的顺序
    while (left_index 

5.快速排序

基本思路:

1.以一个数为基准(中间的数),比基准小的放到左边,比基准大的放到右边。
2.再按此方法对这两部分数据分别进行快速排序(递归进行)。
3.不能再分后退出递归,并重新将数组合并。

图形展示:
图片描述

代码:

var quickSort = function(myArray) {  
// 当被分的数组只剩一个时,退出递归
if (myArray.length 

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/4362/viewspace-2808060/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-08-12

  • 博文量
    0
  • 访问量
    946