快速排序/二分查找
一、快速排序
var quickSort = function(arr) { if (arr.length <= 1) { //如果数组长度小于等于1无需判断直接返回即可 return arr; } var pot = Math.floor(arr.length / 2); //取基准点 var pivot = arr.splice(pot, 1)[0]; //取基准点的值,splice(index,1)函数可以返回数组中被删除的那个数 var left = []; //存放比基准点小的数组 var right = []; //存放比基准点大的数组 for (var i = 0; i < arr.length; i++) { //遍历数组,进行判断分配 if (arr[i] < pivot) { left.push(arr[i]); //比基准点小的放在左边数组 } else { right.push(arr[i]); //比基准点大的放在右边数组 } } //递归执行以上操作,对左右两个数组进行操作,直到数组长度为<=1; return quickSort(left).concat([pivot], quickSort(right)); }; var arrNew = [3, 6, 5] console.log(quickSort(arrNew)) // 使用的时候,直接调用quickSort()就行了。
二、二分查找 (二分查找必须是一个有序数组)
1.将数组折半,分成左右两个数组。
2.判断要查找的数和中间位置数值的大小,来判断要查找的数实在哪一半。
3.之后继续折半查找,直至找到这个数。
/** * 二分查找 递归 * arr 已排好的数组 * low 第一个值的索引 * high 最后一个值的索引 * key 想要查找的值 */ function binary_search(arr, low, high, key) { if (low > high) { return -1; } var mid = parseInt((high + low) / 2); if (arr[mid] == key) { return mid; } else if (arr[mid] > key) { high = mid - 1; return binary_search(arr, low, high, key); } else if (arr[mid] < key) { low = mid + 1; return binary_search(arr, low, high, key); } } console.log(binary_search([1,5,6],0,2,6))
/** * 二分查找 非递归 * arr 已排好的数组 * key 想要查找的值 */ function binary_search(arr, key) { var low = 0, high = arr.length - 1; while (low <= high) { var mid = parseInt((high + low) / 2); if (key == arr[mid]) { return mid; } else if (key > arr[mid]) { low = mid + 1; } else if (key < arr[mid]) { high = mid - 1; } else { return -1; } } } var arr1 = [1, 5, 7] console.log(binary_search(arr1, 7))
【推荐】国内首个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 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构