插入排序的思路

插入排序的思路

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

登陆购买课程后可参与讨论,去登陆

1回答
liuyubobobo 2021-04-05 17:34:13

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


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


继续加油!:)

  • 提问者 else2021 #1

    哦哦,明白了,那老师,我的前两种写法是不是也是正确的

    2021-04-05 17:42:17
  • liuyubobobo 回复 提问者 else2021 #2

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

    2021-04-05 18:18:52
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
算法与数据结构
  • 参与学习       2583    人
  • 解答问题       1082    个

慕课网算法名师Liuyubobobo,5年集大成之作 从0到工作5年,算法与数据结构系统解决方案

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师