网站首页 > 技术文章 正文
在面试时候,会经常考到排序算法,下面列举javascript常用的排序算法。
冒泡排序
通过相邻两个元素之间的比较和交换,使较大的元素逐渐从前面移向后面(升
序),就像水底下的气泡一样逐渐向上冒泡,所以被称为“冒泡”排序。冒泡排序的最坏时间复杂度为O(n2),平均时间复杂度为O(n2)。
代码演示:
var arr=[2,5,4,1,7,3,8,6,9,0]; function arrayMax(arr) { var temp = null; for (var i = 0;i<arr.length-1;i++){ for (var j = i+1;j<arr.length;j++){ //如果前面的数据比后面的大就交换 //两个数交换一定要声明一个变量,用来存储其中要被赋值的那个 if (arr[i]>arr[j]){ temp = arr[j]; arr[j] = arr[i]; arr[i] = temp; } } } return arr; } console.log(arrayMax(arr));
快速排序
元素的比较和交换是从两端向中间进行的,较大的元素一轮就能够交换到后面的位置,而较小的元素一轮就能交换到前面的位置,元素每次移动的距离较远,所以比较次数和移动次数较少,速度较快,故称为“快速排序”。
代码演示:
var times = 0; function queryArrayMax(arr) { //如果数组长度小于等于1无需判断直接返回即可 if (arr.length<=1){ return arr; } var arrIndex = Math.floor(arr.length/2);//获取中间值 这个是索引 var arrCenterVal = arr.splice(arrIndex,1);// 利用索引取出中间值 改变原始数组 var left= [],//存储小的 right = [];//存储大的 // 遍历数组 ,进行判断分配 for (var i = 0;i<arr.length;i++){ if (arr[i]<arrCenterVal){ left.push(arr[i])//比中间值小的放在左边数组 }else{ right.push(arr[i])//比中间值大的放在右边数组 } console.log("第"+(++times)+"次排序后:"+arr); } //递归执行以上操作,对左右两个数组进行操作,直到数组长度为<=1; return queryArrayMax(left).concat(arrCenterVal,queryArrayMax(right)) } console.log(queryArrayMax(arr));
欢迎大家转发和关注,后面将继续发布一些基础教程。
猜你喜欢
- 2024-09-30 JavaScript数组_数组方法「二」(二十七)
- 2024-09-30 table组件,前端如何使用table组件打印数组数据
- 2024-09-30 前端数组改字符串方法 前端数组改字符串方法是什么
- 2024-09-30 javascript复制数组的三种方式 javascript复制粘贴
- 2024-09-30 第21节 检测数组、类数组及多维数组-Web前端开发之Javascript
- 2024-09-30 前端系列——ES6中循环数组的方法
- 2024-09-30 前端已死?请用TS写出20个数组方法的声明
- 2024-09-30 springboot项目中,前端如何传递一个自定义对象数组给后端
- 2024-09-30 带你走进javascript数组的世界 javascript数组操作方法
- 2024-09-30 每天学点 ES6 —— 数组(二) es6数组处理方法
你 发表评论:
欢迎- 05-10如何优化数据库和前端之间的交互?
- 05-10前端代码优化小秘籍(前端优化24条建议)
- 05-10VS Code当中的15个神仙插件,值得收藏
- 05-10如何自己开发一个Google浏览器插件?
- 05-10前端流行框架Vue3教程:14. 组件传递Props效验
- 05-10吃了一年的SU,最好用的插件都在这了
- 05-10前端必看!这款神器让网站界面告别千篇一律
- 05-10程序员请收好:10个非常有用的 Visual Studio Code 插件
- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端md5加密 (49)
- 前端路由 (55)
- 前端数组 (65)
- 前端定时器 (47)
- 前端懒加载 (45)
- 前端接口 (46)
- Oracle RAC (73)
- oracle恢复 (76)
- oracle 删除表 (48)
- oracle 用户名 (74)
- oracle 工具 (55)
- oracle 内存 (50)
- oracle 导出表 (57)
- oracle查询数据库 (45)
- oracle约束 (46)
- oracle 中文 (51)
- oracle链接 (47)
- oracle的函数 (57)
- mac oracle (47)
- 前端调试 (52)
- 前端登录页面 (48)
本文暂时没有评论,来添加一个吧(●'◡'●)