前端排序算法 - 冒泡排序算法 (3)

冒泡排序算法的原理如下:

比较相邻的元素。如果第一个比第二个大,就交换他们两个。

对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。

针对所有的元素重复以上的步骤,除了最后一个。

持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比比较

白话就是:比如有6个数,你需要比较5趟,这个是固定死的

但是每一趟比较的次数,是递减的
 
每一次的排序都可以得到一个最大值   

 

第一趟得到最大值 97  

第2 趟 得到最大值  72 

依次类推  我们可以知道外层循环需要比较  长度 -1  

里层循环 我们应该在 外层循环的基础上 减去每次排序好的最大值 即 长度 - 1  -  排序好的 最大值的数 

 

算法实现 :

let arr = [29,45,68,72,97,51];
// BubblingSort(arr)
function BubblingSort(arr){
    for(i=0;i<arr.length-1;i++){
        for(j=0;j<arr.length-1-i;j++){
            if(arr[j]>arr[j+1]){
                var temp=arr[j];
                arr[j]=arr[j+1];
                arr[j+1]=temp;
            }
        }
    }
    return arr;
}
BubblingSort(arr)
console.log(arr)

判断交换 :

 if(arr[j]>arr[j+1]){
                var temp=arr[j];
                arr[j]=arr[j+1];
                arr[j+1]=temp;
            }

里层循环:

for(j=0;j<arr.length-1-i;j++)

里层循环的等于 外层循环 -  排序好的最大值的个数  也就是 i  

 

 

git  地址:  https://gitee.com/guangzhou110/front-end-sorting-algorithm

posted @ 2021-03-07 14:58  1点  阅读(83)  评论(0编辑  收藏  举报