好久不复习,总是会卡耶 哈哈哈 再来一次
let arr = [9,4,5,64,2,5,811,7,53,6,3,2,1,22,11,55,88,77,88,99,100]
let arr1 = [9,4,5,64,2,5,811,7,53,6,3,2,1,22,11,55,88,77,88,99,100]
let arr2 = [9,4,5,64,2,5,811,7,53,6,3,2,1,22,11,55,88,77,88,99,100]
function sortBubble(arr){
let finish = true;
while (finish){//出口为不存在后一位比前一位大的情况,这里设置一个信号
finish = false;
for(let i=0;i<arr.length-1;i++){
if(arr[i] > arr[i+1]){//遍历之后存在后一位比前一位大的情况则交换之
let flag = arr[i];
arr[i] = arr[i+1];
arr[i+1] = flag;
finish = true;
}
}
}
return arr;
}
function chooseSort(arr){
let count = 0;
while(count < arr.length){//遍历完则为出口
let flag = count;
for(let j=count;j<arr.length;j++){//这里找出后一段数组中最小的数,记住下标
flag = arr[flag]<arr[j] ? flag:j;
}
//选择出最小的数来交换
let ff = arr[count];
arr[count] = arr[flag];
arr[flag] = ff;
count++;
}
return arr;
}
function insertSort(arr){
for(let i=1;i<arr.length;i++){
let flag = arr[i];//选出对比位置
for(let j=i-1;j>=0;j--){
if(flag > arr[j]){//和前面的进行比较,大于则插入前一位,结束
arr[j+1] = flag;
break;
} else {
if(j===0){//不大于等于0则arr[0]后移一位插入0位,结束
arr[j+1] = arr[j]
arr[j] = flag;
break;
} else {//不大于 不等于0 则后移一位空缺,继续比较
arr[j+1] = arr[j]
}
}
}
}
return arr;
}
console.info(sortBubble(arr));
console.info(chooseSort(arr1));
console.info(insertSort(arr2));
效果: