记冒泡排序实现原理

冒泡排序:

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

实现过程:

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

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

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

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

关键点:

冒泡排序的轮次 最大为 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]

 

posted @ 2020-04-25 23:56  阿哲淘小子  阅读(685)  评论(0编辑  收藏  举报