<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
</style>
</head>
<body>
<script>
// 冒泡排序: 把数组每一个元素进行位置交换,每一次取出数组中最大的值,放到数组的结尾
// 优点: 简单 好理解
// 缺点: 实现流程复杂 性能低
var arr = [5, 14, 100, 1, 4];
// 问题: 交换数组中两个元素的位置
// var temp = arr[0];//先把arr[0]的值临时存储
// arr[0] = arr[1];//再把arr[1]的值给arr[0]
// arr[1] = temp;//再把临时存储的arr[0]的值给arr[1]
// console.log(arr);
// 外层循环执行一次,内层的循环执行全部, 外层循环 5 内层循环执行 5
// 5*5 需要25次循环才能将数组排序好
for (let i = 0; i < arr.length; i++) {
for (let j = 0; j < arr.length; j++) {
console.log(arr[i], arr[j+1]);
if (arr[j] > arr[j + 1]) {
// 相邻的元素比较,如果前一个值比后一个大,交换位置
var temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
console.log(arr);
// ---------------优化------------
// for (let i = 0; i < arr.length; i++) {
// // -1的原因:如果不-1 最后一次循环arr[j]==4 arr[j+1]==undefined;
// // -i的原因:减去已经排序好的数字,外层循环一次,就多一个排序好的数字
// // arr.length -1-i 让内层循环每一次循环的次数越来越少
// // 4+3+2+1 =10
// for (let 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;
// }
// }
// }
// console.log(arr);
</script>
</body>
</html>
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交