插入排序的思路
老师你看我的sort 与sort2 是不是也是插入排序的思想,如果是,我就有点模糊,就是插入排序的思想到底是重点是在采用插入这个动作,还是说是保证[0,i)是已经排好序的
class InsertSort{
static sort(arr){
// 假设第一个[0,0]已经排序完成
for(let i=1; i<arr.length; i++){
let curIndex = i;
for(let j=i-1; j>=0; j--){
if(arr[j]>arr[curIndex]) {
this.swap(arr, j, curIndex);
curIndex = j;
console.log(`第${j}次:`+arr);
}
}
// console.log(`第${i}次:`+arr);
}
return arr;
}
static sort2(arr){
// 假设第一个[0,0]已经排序完成
for(let i=1; i<arr.length; i++){
let curIndex = arr[i];
for(let j=i-1; j>=0; j--){
if(arr[j]>curIndex) {
arr[j+1] = arr[j];
arr[j] = curIndex;
}
}
console.log(`第${i}次:`+arr);
}
return arr;
}
static sort3(arr){
// 假设第一个[0,0]已经排序完成
for(let i=1; i<arr.length; i++){
for(let j=i; j-1>=0; j--){
if(arr[j]<arr[j-1]) {
this.swap(arr, j, j-1);
}else{
break;
}
}
console.log(`第${i}次:`+arr);
}
return arr;
}
static swap(arr, i, j){
let temp = arr[i];
arr[i] = arr[j];
arr[j]=temp;
}
}
源自:排序基础
2-2 实现插入排序法
13
收起
正在回答 回答被采纳积分+1
1回答
liuyubobobo
2021-04-05 17:34:13
插入排序的关键是“插入”这个动作。
选择排序和冒泡排序在每轮循环中也是保证 [0,i) 排好序的,但是他们和插入排序是不同的。
继续加油!:)
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星