前端排序算法 - 冒泡排序算法 (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
越努力越幸运