
排序算法
是馨呀!
这个作者很懒,什么都没留下…
展开
-
148. 排序链表 JavaScript实现
148. 排序链表 题目链接 一、思想 1、排序算法选择 要求:在 O(nlogn) 时间复杂度和常数级空间复杂度下,对链表进行排序 排序算法中时间复杂度为 O(nlogn) 的是归并排序,堆排序,快速排序(最差时间复杂度是O(n2)) 其中最适合链表的排序算法是归并排序。 2、归并排序的实现方法 归并排序基于分治算法。通常使用自顶向下的递归实现方式,需要使用栈,空间复杂度为O(logn) 如果要达到 O(1) 的空间复杂度,则需要使用自底向上的实现方式。 二、自顶向下归并排序 – 递归版本实现 递归分割原创 2022-05-20 15:54:05 · 703 阅读 · 0 评论 -
69. x 的平方根 JavaScript实现
69. x 的平方根 题目链接 一、思想 题目详解 二、代码实现 var mySqrt = function(x) { // 对于小于等于1的数 if(x==0 || x==1) return x // 对于大于1的数,使用二分查找,res是最后的结果 let low=1,high=x,res=-1 while(low<=high){ let mid = low + ((high-low)>>1) // 将x和m原创 2022-05-19 15:15:37 · 314 阅读 · 0 评论 -
二分查找 JavaScript实现
二分查找 一、思想 二、实现 function searchNum (target, nums) { if (!nums.length) return -1; let left = 0; let right = nums.length - 1; while (left <= right) { // >> 1 位运算代替 除2 取整 操作 // 为什么不写成 mid = (left+right)/2 ,因为考虑到left+right的溢出边界情原创 2022-04-28 17:06:58 · 470 阅读 · 0 评论 -
33. 搜索旋转排序数组 JavaScript实现
33. 搜索旋转排序数组 搜索旋转排序数组 一、思想 时间复杂度为O(n),使用遍历。时间复杂度为O(logn),使用二分查找。 二、代码实现 1、遍历 var search = function(nums, target) { const n = nums.length; for(let i=0;i<n;i++){ if(nums[i] == target){ return i; } } return原创 2022-04-28 16:52:20 · 920 阅读 · 0 评论