zoukankan      html  css  js  c++  java
  • 记冒泡排序实现原理

    冒泡排序:

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

    实现过程:

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

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

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

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

    关键点:

    冒泡排序的轮次 最大为 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]
  • 相关阅读:
    2.8
    2.7
    2.6
    2.5
    2.4第三篇读后感
    2.2第一篇读后感
    2.1
    字符统计
    6468: Snuke's Coloring
    6463: Tak and Hotels II
  • 原文地址:https://www.cnblogs.com/chandlerwong/p/12776358.html
Copyright © 2011-2022 走看看