冒泡排序原理:比较两个相邻的元素,将值大的元素交换到右边
思路:
原始数组:5、4、3、2、1
第一轮比较(4次):
第1次比较 因为5>4,所以5和4交换位置;
第2次比较 因为5>3,所以5和3交换位置;
第3次比较 因为5>2,所以5和2交换位置;
第4次比较 因为5>1,所以5和1交换位置。
第一轮比较后数组:4、3、2、1、5
第二轮比较(3次):
第1次比较 因为4>3,所以4和3交换位置;
第2次比较 因为4>2,所以4和2交换位置;
第3次比较 因为4>1,所以4和1交换位置。
因为第一轮5和4比较了所以第二轮不用比较
第二轮比较后数组:3、2、1、4、5
第三轮比较(2次):
第1次比较 因为3>2,所以3和2交换位置;
第2次比较 因为3>1,所以3和1交换位置。
因为第二轮4和3比较了所以第三轮不用比较;
因为第一轮5和4比较了所以第三轮不用比较。
第三轮比较后数组:2、1、3、4、5
第四轮比较(1次):
第1次比较 因为2>1,所以2和1交换位置。
因为第三轮3和2比较了所以第三轮不用比较;
因为第二轮4和3比较了所以第三轮不用比较;
因为第一轮5和4比较了所以第三轮不用比较。
第四轮比较后数组:1、2、3、4、5
思路图解:
效果图:
源码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>冒泡排序</title>
</head>
<body>
<script>
//冒泡排序:把所有的数据按照一定的顺序进行排列
var arr = [5, 4, 3, 2, 1];
//循环控制比较的轮数
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;
}
}
}
console.log(arr);
</script>
</body>
</html>