冒泡排序
冒泡排序就是比较任何两个相邻的项,如果第一个比第二个大,则交换它们。元素项向上移动至正确的顺序,就好像气泡上升至表面一样,冒泡排序因此得名。
冒泡排序实现:
function bubbleSort(array){ var length = array.length; for (var i = 0; i < length; i++) { //控制数组经过了多少轮排序 for (var j = 0; j < length - 1; j++) { //进行了当前项和下一项的比较 if (array[j] > array[j + 1]) { swap(array, j, j + 1) } } } }; function swap (array, index1, index2) { var aux = array[index1]; array[index1] = array[index2]; array[index2] = aux; //ES6写法 [array[index1], array[index2]] = [array[index2], array[index1]]; }
我们可以看到外层的循环主要是控制了数组中经过了多少轮循环(数组中的,每一项都经过一轮,轮数和数组的长度是一致的)。然后内循环将从第一位迭代到倒数第二位,内循环实际上进行当前项与下一项的比较,如果当前项比下一项大,则交换它们。
我们还可以发现当外循环完成一轮,最后一项就已经在正确的位置(即为最大项),然而在后续的循环中,还一直进行着比较,所以我们可以改进一下
思路:
如果内循环减去外循环的轮数,就可以避免内循环中所有不必要的比较
function modifiedBubbleSort() { var length = array.length; for (var i = 0; i < length; i++) { for (var j = 0; j < length - 1 - i; j++) { if (array[j] > array[j + 1]) { swap(array, j, j + 1) } } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!