美文网首页
冒泡排序:

冒泡排序:

作者: __越过山丘__ | 来源:发表于2018-12-25 19:31 被阅读0次

效率较低,生产环境中很少使用。

实现原理:

数组中有 n 个数,比较每相邻两个数,如果前者大于后者,就把两个数交换位置;这样一来,第一轮就可以选出一个最大的数放在最后面;那么经过 n-1(数组的 length - 1) 轮,就完成了所有数的排序。

由于每进行一次这个过程,在该次比较的最后一个位置上,正确的数会自己冒出来,就好像“冒泡”一样,这种算法因此得名。

以对数组[3, 2, 4, 5, 1]进行从小到大排序为例,步骤如下:

  • 第一位的“3”与第二位的“2”进行比较,3大于2,互换位置,数组变成[2, 3, 4, 5, 1]。

  • 第二位的“3”与第三位的“4”进行比较,3小于4,数组不变。

  • 第三位的“4”与第四位的“5”进行比较,4小于5,数组不变。

  • 第四位的“5”与第五位的“1”进行比较,5大于1,互换位置,数组变成 [2, 3, 4, 1, 5]。

第一轮排序完成,可以看到最后一位的5,已经是正确的数了。然后,再对剩下的数 [2, 3, 4, 1]重复这个过程,每一轮都会在本轮最后一位上出现正确的数。直至剩下最后一个位置,所有排序结束。

代码实现:

function swap(left, right, array){
    var temp = array[left];

    array[left] = array[right];
    array[right] = temp;
}

function bubbleSort(myArray){
    let len = myArray && myArray.length;

    for ( let i = 0; i < len - 1; i++ ){
          for ( let j = 0; j < (len - 1 - i); j++ ){
                if ( myArray[j] > myArray[j + 1]){
                     swap(j, j+1,  myArray)
                }
          }
    }
    return myArray
}

相关文章

网友评论

      本文标题:冒泡排序:

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