冒泡排序:
- 比较相邻的元素,根据排序从小到大还是从大到小判断是否交换,一趟下来,有一个已排好序;如果遇到某一趟数据已经没有出现交换,说明已是有序数组,退出即可
function bubble(arr){
if(!(Array.isArray(arr))) {
alert('数据类型有误,请传入数组');
return;
}
if(arr.length === 0) {
console.log('数组为空');
return arr;
}
// count记录比较趟数
let count=0;
// 外层循环,控制趟数,每一次找到一个最大值
for(var i=0;i<arr.length-1;i++){ // 比较趟数
// 记录是否有交换,如果一趟比较下来没有交换说明已经是有序的了
let isExchange = false;
// 内层循环,控制比较的次数,并且判断两个数的大小
for(var j=0; j< arr.length-1-i;j++){
// 如果前面的数大,放到后面(从小到大的冒泡排序)
if(arr[j] > arr[j+1]){
let temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
isExchange = true;
}
}
count++
if(!isExchange) {
break;
}
}
console.log(count);
return arr;
}
const tempArr = [1,3,2,5,7,5,9,8, 11,87,0];
const returnArr = bubble(tempArr);
console.log(returnArr , 'returnArr');
console.log(tempArr, 'tempArr');
参考&感谢各路大神