JavaScript中数组的二分查找、冒泡排序、转置
二分查找
前提:该数组是有序的,如果不是有序的,则不能使用二分查找
//定义一个数组 arr = [1, 6, 8, 9, 45, 67, 89]; function find(arr, findVal, leftIndex, rightIndex) { // 防止无穷递归 if (arr[leftIndex] > arr[rightIndex]) { document.writeln("找不到"); return; } //找中间值 //floor()对一个数进行下舍入 var midIndex = Math.floor((leftIndex + rightIndex) / 2); var midValue = arr[midIndex]; //递归 if (midValue > findVal) { find(arr, findVal, leftIndex, midIndex - 1); } else if (midValue < findVal) { find(arr, findVal, midIndex + 1, rightIndex); } else { document.writeln(midIndex); return; } } // 测试 find(arr, 45, 0, arr.length - 1); </script>
冒泡排序
原理:相邻的两个元素之间进行比较
<script type="text/javascript" language="javascript"> //冒泡排序 var arr = [5, 0, -56, 900, 12, 9]; var temp = 0; for (var i = 0; i < arr.length - 1; i++) { for (var j = 0; j < arr.length - i; j++) { if (arr[j] > arr[j + 1]) { temp = arr[j + 1]; arr[j + 1] = arr[j]; arr[j] = temp; } } } console.log(arr); </script>
数组转置
数组转置就是行列互换
<script type="text/javascript" language="javascript"> // 转置,就是行列互换 var arr = [ [2, 4, 6, 8], [8, 9, 0, -1], [9, 6, 2, 3] ]; var arr_new = []; //初始化新数组的元素,确定一下新数组一共有多少行 for(var i=0;i<arr[0].length;i++){ arr_new[i]=[0]; } //转置 for(var i=0;i<arr.length;i++){ //遍历每个具体的值 for(var j=0;j<arr[i].length;j++){ arr_new[j][i]=arr[i][j]; } } //输出新数组 for(var i=0;i<arr_new.length;i++){ for(var j=0;j<arr_new[i].length;j++){ document.writeln(arr_new[i][j]+" "); } document.writeln("<br/>"); } </script>
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 2 本地部署DeepSeek模型构建本地知识库+联网搜索详细步骤
2017-06-10 Linux-基本操作内容