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