冒泡排序算法的原理如下:
-
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
-
对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
-
针对所有的元素重复以上的步骤,除了最后一个。
-
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比比较
白话就是:比如有6个数,你需要比较5趟,这个是固定死的
但是每一趟比较的次数,是递减的
所以实现冒泡,给你一个数组,你要比较几趟,每一趟比较几次,这个是必须要明白的!!!
function bubbleSort(arr) {
if (!Array.isArray(arr) || arr.length === 0) {
return 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]) {
var temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
return arr;
}
var arr = [5, 2, 45, 52, 78, 89, 12, 31, 32, 4];
bubble(arr); // [2, 4, 5, 12, 31, 32, 45, 52, 78, 89]
菜鸟的-十大经典排序算法-附有图解
原文链接:https://blog.csdn.net/qq_38845858/article/details/93890367










网友评论