一、桶排序 概念 桶排序,核心思想是将要排序的数据分到几个有序的桶里,每个桶里的数据再单独进行排序。桶内排序之后,再把每个桶里的数据按照顺序依次取出,组成的序列就是有序的。 应用场景 桶排序比较适合用在外部排序中。所谓的外部排序就是数据存储在外部磁盘中,数据量比较大,内存有限,无法将数据全部加载到内 ...
分类:
编程语言 时间:
2020-06-21 23:00:56
阅读次数:
52
这三种排序算法分别是桶排序、计数排序和基数排序,之所以它们的时间复杂度能到达O(n),是因为它们都是非基于比较的排序算法,不涉及元素之间的比较操作。 1 桶排序 1.1 原理 将待排数据元素分配到几个有序的桶中,然后对每个桶中的数据元素分别进行排序,每个桶中的数据元素有序后按桶的顺序将数据元素依次取 ...
分类:
编程语言 时间:
2020-06-16 20:03:08
阅读次数:
101
找出数组中重复的数字。 在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。 示例 1: 输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3 限制: 2 ...
分类:
编程语言 时间:
2020-06-07 11:02:20
阅读次数:
59
排序算法提多了,很多甚至连名字你都没听过,比如猴子排序、睡眠排序等。最常用的:冒泡排序、选择排序、插入排序、归并排序、快速排序、计数排序、基数排序、桶排序。根据时间复杂度,我们分三类来学习,今天要讲的就是冒泡、插入、选择排序算法。排序算法时
分类:
编程语言 时间:
2020-06-05 00:58:45
阅读次数:
68
关注公号「码哥字节」修炼技术内功心法,完整代码可跳转GitHub:https://github.com/UniqueDong/algorithms.git摘要:排序算法提多了,很多甚至连名字你都没听过,比如猴子排序、睡眠排序等。最常用的:冒泡排序、选择排序、插入排序、归并排序、快速排序、计数排序、基数排序、桶排序。根据时间复杂度,我们分三类来学习,今天要讲的就是冒泡、插入、选择排序算法。排序算法时
分类:
编程语言 时间:
2020-06-05 00:28:49
阅读次数:
72
1. LeetCode Link LeetCode 1051. 高度检查器 2. Tag 数组 Optimize 3. Code 桶排序,时间复杂度$O(n)$ class Solution { public: int heightChecker(vector<int>& heights) { in ...
分类:
其他好文 时间:
2020-05-29 09:53:51
阅读次数:
66
https://ac.nowcoder.com/acm/contest/5773/A 给一个数列,求第k小的数。 一开始想的是集合、优先队列,自动排好序的容器。交上去两个都t了。 换一种思路,用个桶排序,每次遇到一个数加1,从小到大扫一遍,每遇到数列里的数计数加一,等于k时输出。 #include< ...
分类:
编程语言 时间:
2020-05-25 22:10:54
阅读次数:
98
题意: 给你一个序列,如果有一个数满足序列里的一段子序列的和等于这个数,那么就称这个数为特殊数。 请你计算有多少个特殊数。 题解: 观察数据范围,我们可以构造一个桶记录每个数的出现次数,再枚举所有前缀和统计,用完这个桶就把它清空,时间复杂度O(n^2)。一开始写的map做法也是这个复杂度不知道为什么 ...
分类:
编程语言 时间:
2020-05-23 20:33:20
阅读次数:
64
概念 桶排序 Bucket Sort 假设待排序的输入数据服从均匀、独立地分布在区间 [ 0, 1 ). 桶排序将区间 [ 0, 1)划分为 n 个相同大小的子区间, 或称为 桶 bucket. 然后, 将输入的 n 个数据分别放到各个桶中. 进而, 先对每个桶中的数进行排序, 然后遍历每个桶, 按 ...
分类:
编程语言 时间:
2020-05-18 16:16:44
阅读次数:
55
概念 桶排序 Bucket Sort 假设待排序的输入数据服从均匀、独立地分布在区间 [ 0, 1 ). 桶排序将区间 [ 0, 1)划分为 n 个相同大小的子区间, 或称为 桶 bucket. 然后, 将输入的 n 个数据分别放到各个桶中. 进而, 先对每个桶中的数进行排序, 然后遍历每个桶, 按 ...
分类:
编程语言 时间:
2020-05-18 16:13:50
阅读次数:
60