企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
<hr> <div id="div1"><h3> <font color=red > 直接插入排序 </font><h3></div> https://leetcode-cn.com/problems/insertion-sort-list/ 第一层循环:遍历待比较的所有数组元素 第二层循环:将本轮选择的元素(selected)与已经排好序的元素(ordered)相比较。 如果:selected > ordered,那么将二者交换 ```javascript function insertSort(arr) { for (let i = 1; i < arr.length; i++) { let temp = arr[i] let j for (j = i - 1; j >= 0; j--) { if (arr[j] > temp) { // 插入元素小于比较元素,比较元素则向后移动一位 arr[j + 1] = arr[j] } else { break } } arr[j + 1] = temp } return arr } console.log(insertSort([7, 3, 4, 5, 10, 7, 8, 2])) ``` ==插入排序的优化:二分排序== 在插入第i个元素时,对前面的0~i-1元素进行折半,先跟它们中间的元素进行比较。如果小,那么对前半进行折半;如果打,那么对后半进行折半。依次进行,直到left>right。然后再把第i个元素前一位与目标位置之间的所有元素向后移动一位,再将目标元素放入正确位置上。 ```javascript function binarySort(arr) { for (let i = 0; i < arr.length; i++) { let temp = arr[i] let left = 0 let right = i - 1 let mid while (left <= right) { mid = Math.floor((left + right) / 2) if (arr[mid] > temp) { right = mid - 1 } else { left = mid + 1 } } for (let j = i - 1; j >= left; j--) { arr[j + 1] = arr[j] } if (left !== i) { arr[left] = temp } } return arr } console.log(binarySort([7, 3, 4, 5, 10, 7, 8, 2])) ```