插入排序的思路

来源:2-2 实现插入排序法

else2021

2021-04-05 17:19:06

老师你看我的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;
}
}


写回答

1回答

liuyubobobo

2021-04-05

插入排序的关键是“插入”这个动作。


选择排序和冒泡排序在每轮循环中也是保证 [0,i) 排好序的,但是他们和插入排序是不同的。


继续加油!:)

0
hiuyubobobo
回复
hlse2021
hp>我看了一遍你的逻辑,是正确的。其实你的前两个实现,本质也是插入排序的思路。只不过对与如何实现“插入”这个过程,具体的实现方式和我的实现方式不同而已:)

h021-04-05
共2条回复

算法与数据结构

波波老师5年集大成之作,算法与数据结构系统学习,考试、面试、竞赛通用

2584 学习 · 1063 问题

查看课程