冒泡排序,插入排序,选择排序
冒泡排序 OK 两两比较,大数放到最后。双层循环
插入排序 假设前面的元素是有序的,从后面选取一个元素,跟前面的元素比较,如果前面的元素比这个元素大,那么前面的元素全部向后移动一位,给这个元素空间
插入排序:后面的元素插入合适的位置
选择排序 假设第一个元素是最小的元素,让其他元素跟这个元素比较,如果比这个元素还小,记录这个最小的元素下标,交换第一个元素和最小的元素,这样找到了最小的元素,后面的n-1个元素重复这个过程
选择排序:选择出最小的元素下标
原地排序—内存消耗:空间复杂度O(1)
排序算法的稳定性:source中存在值相等的元素,排序后,这两个值相等的元素前后位置不变
注意:选择排序是不稳定的!!!
插入排序为啥比冒泡排序好,因为插入排序只有一次赋值操作,冒泡排序有三次赋值操作
const chooseSort = (arr) => { //从后面选择出最小的元素下标 for(var i = 0; i < arr.length; i++){ var minIdx = i for(var j = i+1;j < arr.length;j++){ if(arr[j] < arr[minIdx]){ minIdx = j //找到最小的index } } var temp = arr[i] arr[i] = arr[minIdx] arr[minIdx] = temp } console.log('选择排序:',arr) } const insertSort = (arr) => { //假设前面的有序,后面取一个元素,插入合适的位置 //https://www.runoob.com/w3cnote/insertion-sort.html for (var i = 1 ; i< arr.length;i++){ var current = arr[i] var pre = i -1 while(pre >= 0 && arr[pre] > current){ arr[pre + 1] = arr[pre] pre-- } arr[pre+1] = current } console.log('插入排序:',arr) } const bubleSort = (arr) => { for(var i = 0;i < arr.length;i++){ for(var j = 0; j<arr.length-1-i ;j++){ if(arr[j] > arr[j+1]){ var temp = arr[j] arr[j] = arr[j+1] arr[j+1] = temp } } } console.log('冒泡:',arr) } const test = [4, 5, 6, 3, 2, 1] chooseSort(test) // insertSort(test) // bubleSort(test)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?