标签:lse i++ else 成长 开发者 code 递增 floor 社区
快排和二分查找都基于一种叫做「分治」的算法思想,通过对数据进行分类处理,不断降低数量级,实现O(logN)
(对数级别,比O(n)
这种线性复杂度更低的一种,快排核心是二分法的O(logN)
,实际复杂度为O(N*logN)
)的复杂度。
快排大概的流程是:
const Arr = [85, 24, 63, 45, 17, 31, 96, 50]; function quickSort(arr) { if (arr.length <= 1) { return arr; } let pivotIndex = Math.floor(arr.length / 2); let pivot = arr.splice(pivotIndex, 1)[0]; let left = []; let right = []; for (let i = 0; i < arr.length; i++) { if (arr[i] < pivot) { left.push(arr[i]); } else { right.push(arr[i]); } } // 递归 return quickSort(left).concat([pivot], quickSort(right)); } console.log(quickSort(Arr));... https://juejin.im 掘金 — 一个帮助开发者成长的社区
二分查找法主要是解决「在一堆有序的数中找出指定的数」这类问题,不管这些数是一维数组还是多维数组,只要有序,就可以用二分查找来优化。
二分查找是一种「分治」思想的算法,大概流程如下:
题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
function Find(target, array) { let i = 0; let j = array[i].length - 1; while (i < array.length && j >= 0) { if (array[i][j] < target) { i++; } else if (array[i][j] > target) { j--; } else { return true; } } return false; } //测试用例 console.log(Find(10, [ [1, 2, 3, 4], [5, 9, 10, 11], [13, 20, 21, 23] ]) );... https://juejin.im 掘金 — 一个帮助开发者成长的社区
标签:lse i++ else 成长 开发者 code 递增 floor 社区
原文地址:https://www.cnblogs.com/guoxianglei/p/9474846.html