冒泡排序
理论:比较轮数 n-1 比较次数 n-1次 符合条件就交换位置
核心:双重for 循环
步骤:双重for 循环 指定轮数和次数 判断是都符合最后的标准,如果符合就交换位置
//冒泡排序简单版
var arr = [23,54,65,43,12,58];
var temp;
var m = 0; //循环总次数
for (var i = 0; i < arr.length-1; i++) {
// 控制轮数
for (var j = 0; j < arr.length-1; j++) {
// 控制次数
if (arr[j]>arr[j+1]) {
// 判断是否符合标准
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
// 交换位置 从小到大,前面比后面大就交换。
}
m++;
}
}
console.log(m);
console.log(arr);
// 冒泡排序中级版
var arr = [23,54,65,43,12,58];
var temp;
var m = 0;
for (var i = 0; i < arr.length-1; i++) {
// 控制轮数
for (var j = 0; j < arr.length-1-i; j++) {
// 控制次数 arr.lenth-1-i因为每一轮都会比较出最大值,所以最大值可不必再次比较。
if (arr[j]>arr[j+1]) {
// 判断是否符合标准
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
// 交换位置 从小到大,前面比后面大就交换。
}
m++;
}
}
console.log(m);
console.log(arr);
// 冒泡排序最终版
var arr = [23,54,65,43,12,58];
var temp;
var m = 0;//循环次数
for (var i = 0; i < arr.length-1; i++) {
// 控制轮数
var bool = true;
// 开闭原则
for (var j = 0; j < arr.length-1-i; j++) {
// 控制次数 arr.lenth-1-i因为每一轮都会比较出最大值,所以最大值可不必再次比较。
if (arr[j]>arr[j+1]) {
// 判断是否符合标准
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
// 交换位置 从小到大,前面比后面大就交换。
bool = false;
// 如果有循环数字变动就令 bool值为false
}
m++;
}
if (bool= true) {
break;
// 如果 bool值为true,则证明后面无任何调换 ,排序已经完成,因此可以跳出循环。
}
}
console.log(m);
console.log(arr);