JS的冒泡排序(用于数组操作):
通过多层for循环对数组中的数据进行排序的操作,也可以进行一些操作。
下面通过俩个冒泡排序的案例来进行理解
// 从第一个元素开始往后删除的元素只能比该元素小,不能比该元素大 且计数进行了多少 // 次外层循环操作
let arr = [1000,3330,2200,3350,210,110,354,456,12,33,21,43];
/**
* 例 :
* 1000 210 110 12
* 3330 2200 354
* 3350 456 33 21
* 43
**/
console.log("数组长度:" + arr.length)
var num = 0;
// 循环数组
arr for(let i = 0; i < arr.length; i++){
var first = arr[i];
// 内层循环( 让该元素与后面的所有元素都比较一次 )
for(let j = 1; j < arr.length; j++){
console.log(j)
console.log(`第 ${i} 次` + arr[j])
if(first > arr[j]){
// console.log("冒牌排序:" + first,arr[j])
// 重新赋值给first 便于继续往后比较 first = arr[j]
// 删除数组对应的下标 继续执行循环
arr.splice(j,1)
j--;
}
} num = i + 1;
}
console.log(num)
案例2:数组中的两项去相加 只要相加的和等于数组中的数据 那么返回true
// 定义数组用于遍历
let arr = [1,24,2,5,23,55];
// 定义函数
function fn1(target){
// 设置flag值 用于返回
var flag = false;
// 循环数组
for(let i = 0; i < target.length; i++) {
// 获取数组中的数据
let tar = target[i];
// 内层循环
for(let j = 1; j < target.length; j++){
// 让外层的数据与内层的数据相加
let sum = tar + target[j];
// 利用数组的includes函数来判断是否有当前这个数据
if(arr.includes(sum)){
// 有这个数据则将flag值设置为true
console.log("成功")
flag = true;
}
}
}
// 返回flag
return flag;
}
console.log(fn1(arr))
总结: 数组的一个冒泡排序一般二层循环就够用。主要是外层循环与内层循环进行一个数据的联动( 进行排序,大小比较,数据类型排序 ) 也可以根据数组的一些方法来进行更多复杂的操作。