实现原理
数组中有
n个数,比较每相邻两个数,如果前者大于后者,就把两个数交换位置;这样一来,第一轮就可以选出一个最大的数放在最后面;那么经过n-1(数组的 length - 1) 轮,就完成了所有数的排序。
我们先来实现找数组中的最大数,并把他放到数组最后。
let arr = [2,4,3,5,1]
// 遍历数组,次数就是arr.length - 1
for (let i = 0; i < arr.length - 1; i++) {
// 如果前一个数 大于 后一个数 就交换两数位置
if (arr[i] > arr[i + 1]) {
var temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
}
}
console.log(arr) // [2, 3, 4, 1, 5]
我们能找到数组中最大的数,放到最后,这样重复 arr.length - 1 次,便可以实现数组按从小到大的顺序排好
let arr = [2,4,3,5,1]
// 遍历数组,次数就是arr.length - 1
for (let i = 0; i< arr.length - 1; i++) {
// 这里 j < arr.length - 1 ,要思考思考合适吗?我们下面继续说
for (var j = 0; j < arr.length - 1; j++) {
if (arr[j] > arr[j + 1]) {
var temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
console.log(arr) // [1, 2, 3, 4, 5]
利用sort()方法实现冒泡排序
升序
<script>
// 从大到小的排序
let arr = [2,4,3,5,1]
// 遍历数组
for(let i =0;i<arr.length-1;i++){
for(let j=0;j<arr.length-i-1;j++){
// 开始交换 但是前提 第一个数大于第二个数才交换
if(arr[j]>arr[j+1]){
// 交换2个变量
let temp = arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
};
};
};
// arr.sort();//排序
// sort //升序排列
arr.sort(function (a,b){
return a-b;
});
console.log(arr);
降序
<script>
// 从大到小的排序
let arr = [2,4,3,5,1]
// 遍历数组
for(let i =0;i<arr.length-1;i++){
for(let j=0;j<arr.length-i-1;j++){
// 开始交换 但是前提 第一个数大于第二个数才交换
if(arr[j]>arr[j+1]){
// 交换2个变量
let temp = arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
};
};
};
// arr.sort();//排序
// sort()降序
arr.sort(function(a,b){
return b-a;
});
console.log(arr);