记冒泡排序实现原理

Posted chandlerwong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了记冒泡排序实现原理相关的知识,希望对你有一定的参考价值。

冒泡排序:

数值小的慢慢向上浮起,形同冒泡,即升序排列数值

实现过程:

相邻数值两两交换,每轮冒泡(循环)把最小/大的数放在最后。

从第一个数值开始,如果相邻两个数的排列顺序与我们的期望不同,则将两个数的位置进行交换(对调);

如果其与我们的期望一致,则不用交换。

重复这样的过程,一直到最后没有数值需要交换,则排序完成。

关键点:

冒泡排序的轮次 最大为 n-1

每轮的交换次数 最大为 n-1,n-2,n-3,....1

图解:

技术图片

 

 

 

代码实例:

 //冒泡排序 升序
    var arr=[3,5,4,6,1,2]
    //比较轮数
    for(var i=0;i<arr.length-1;i++){
        //每轮比较次数
        for(var j=0;j<arr.length-1-i;j++){
            if(arr[j]>arr[j+1]){
                if(arr[j]>arr[j+1]){
                //借助第三方变量temp交换两个变量的值
                var temp=arr[j];//当前值
                //通过比较相邻位置互换
                arr[j]=arr[j+1];//把后一位值向前移一位
                arr[j+1]=temp;//把当前一位值向后移一位
            }
        }
    }
  } console.log(arr);
//输出结果[1,2,3,4,5,6]

简单封装

 //封装
    function compare(arr){
        //比较轮数
        for(var i=0;i<arr.length-1;i++){
        //没轮比较次数
        for(var j=0;j<arr.length-1-i;j++){
            if(arr[j]>arr[j+1]){
                //借助第三方变量temp交换两个变量的值
                var temp=arr[j];//当前值
                //通过比较相邻位置互换
                arr[j]=arr[j+1];//把后一位值向前移一位
                arr[j+1]=temp;//把当前一位值向后移一位
            }
        }
    }
    return arr;
    }
    console.log(compare([5,6,5,2,8,9])); //输出[2, 5, 5, 6, 8, 9]

数组排序其他方法

sort()

   var arr=[3,5,4,6,1,2]
    //sort()
    function sortNumber(a,b){
        //return a-b;//升序
        return b-a;降序
    }
   console.log(arr.sort(sortNumber));//输出[6, 5, 4, 3, 2, 1]

 

以上是关于记冒泡排序实现原理的主要内容,如果未能解决你的问题,请参考以下文章

[GO]冒泡排序的原理和代码实现

三大基础排序算法(冒泡排序,选择排序,插入排序)

如何用VBA实现冒泡排序?

Java排序算法之冒泡排序

8种面试经典!排序详解--选择,插入,希尔,冒泡,堆排,3种快排,快排非递归,归并,归并非递归,计数(图+C语言代码+时间复杂度)

8种面试经典排序详解--选择,插入,希尔,冒泡,堆排,3种快排及非递归,归并及非递归,计数(图+C语言代码+时间复杂度)