
排序
排序
qxlxi
21届本,后端工程师 (专注于JUC、MySQL、MQ、Dubbo、Spring体系)
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【每日一题-leetcode】493. 翻转对
493. 翻转对 难度困难118 给定一个数组 nums ,如果 i < j 且 nums[i] > 2nums[j] 我们就将 (i, j) 称作一个重要翻转对*。 你需要返回给定数组中的重要翻转对的数量。 示例 1: 输入: [1,3,2,3,1] 输出: 2 示例 2: 输入: [2,4,3,5,1] 输出: 3 //归并排序中进行统计 public int reversePairs(int[] nums) { if(nums =原创 2020-08-10 19:50:07 · 741 阅读 · 0 评论 -
【左神算法】给定一个数组,求如果排序之后,相邻两数的最大差值,要求时间复杂度O(N),且要求不能用非基于比较的排序。
1.题目 给定一个数组,求如果排序之后,相邻两数的最大差值,要求时间复杂度O(N),且要求不能用非基于比较的排序。 2.实现 2.1 思路 问题: * 给定一个数组,求如果排序之后,相邻两数的最大差值,要求时间复杂度O(N),且要求不能用非基于比较的 排序。 * 比如 数组[1,2,9,4,6] sort后 [1,2,4,6,9] 6-9之间间隙最大值就为3. * 思路: * 我们可以基于桶排序的思想来解决这个问题。data[1,2,3,4,5,7,原创 2020-05-09 20:57:18 · 885 阅读 · 2 评论 -
【算法】堆排序
堆排序 思路 思路:堆排序是比较重要的排序,主要是基于堆结构。而堆结构就是完全二叉排序树。因为二叉排序树的结构特点。 * 我们可以用数组进行模拟二叉树的左右子节点, 关系就是 root节点的左子节点为 2*i + 1 root节点的右子节点为 2*i+2 * 而左子节点或者右子节点的父节点为 (i-1)/2 ,通过上述关系就可以通过数组来实现堆结构。 * 而堆结构中比较重要的两个操作就是 一个是节点的生成 也就是heapInsert 比如添加一个节点3 需要父节点比较大小原创 2020-05-08 17:52:03 · 345 阅读 · 1 评论 -
【左神算法】随机+荷兰国旗优化版快排
随机+荷兰国旗优化版快排 思路: 快速排序 time O(NlogN) space : O(logN) * 实现思路: * 经典快排,分区是按照数组的最后一个元素进行分区,而在分区的过程中,每次只能确定一个元素的位置。因此,当出现 极端情况 * [1,2,3,4,5,6] or [9,8,5,3,1] 这种已经排序好的情况,time 为...原创 2020-05-08 17:01:59 · 731 阅读 · 1 评论 -
【剑指offer】40.最小的K个数
40.最小的K个数 面试题40. 最小的k个数 难度简单76 输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。 示例 1: 输入:arr = [3,2,1], k = 2 输出:[1,2] 或者 [2,1] 示例 2: 输入:arr = [0,1,2,1], k = 1 输出:[0] Top(k) 问题...原创 2020-04-28 19:06:49 · 356 阅读 · 0 评论