冒泡排序
// 实现从小到大排序
var arr = [4, 3, 1, 6, 9, 2];
// 第一轮
// 4 3 3 4 1 6 9 2
// 4 1 3 1 4 6 9 2
// 4 6 3 1 4 6 9 2
// 6 9 3 1 4 6 9 2
// 9 2 3 1 4 6 2 9 最大的值在最后面
for(var 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);
// // 第二轮
// // 3 1 1 3 4 6 2 9
// // 3 4 1 3 4 6 2 9
// // 4 6 1 3 4 6 2 9
// // 6 2 1 3 4 2 6 9
// // 6和9不需要比较 第一轮结束后最大的值一定在最后面
for(var i = 0 ; i < arr.length - 1 - 1 ; i++) {
if(arr[i] > arr[i + 1]) {
var temp = arr[i] ;
arr[i] = arr[i + 1] ;
arr[i + 1] = temp ;
}
}
console.log(arr);
// // 第三轮
for(var i = 0 ; i < arr.length - 1 - 2 ; i++) {
if(arr[i] > arr[i + 1]) {
var temp = arr[i] ;
arr[i] = arr[i + 1] ;
arr[i + 1] = temp ;
}
}
console.log(arr);
最终代码如下
for(var j = 0 ; j < arr.length - 1 ; j++) { // 控制比较的轮数 比较的轮数少一次(后5个数排好之后,剩下的一个肯定在最前面)
for (var i = 0; i < arr.length - 1 - j; i++) { // 相邻的比较,大的往后排 -1是因为做相邻的比较,最后一个没人可比 -j 每一轮都会排好一个最大的数(不需要进行比较)
if (arr[i] > arr[i + 1]) {
var temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
}
}
console.log(arr);}
console.log(arr);