根据字符出现频率排序。题意是给一个字符串,请按照出现字符的频率高低重新排列这个字符并输出。例子, Example 1: Input: "tree" Output: "eert" Explanation: 'e' appears twice while 'r' and 't' both appear ...
分类:
其他好文 时间:
2020-01-23 13:58:02
阅读次数:
71
排序算法(一) [toc] 计数排序 计数排序应该是 最简单 的排序算法了吧。 基本思想 计数排序运用了 桶排序 的思想,于是我们就现来讲讲桶排序: (第一次画图,经验不足,请谅解) 桶排序的思想用语言来表述就是: 将数按值的大小放进几个表示数的范围的桶中,在每个桶中风别再做排序,最后从前向后合并。 ...
分类:
编程语言 时间:
2020-01-22 14:46:16
阅读次数:
100
一说到排序算法,大部分人都会说出著名的万金油-快速排序、大数据分而治之-归并排序、大数据排名-堆排序。这些排序无论在面试还是实际项目中,都是经常用到的一些排序算法,其平均时间复杂度都在 O(N ? log2N),那今天我们就来介绍几种 O(N)的排序算法。 1,计数排序,输入 n 个范围在 0-k ...
分类:
编程语言 时间:
2020-01-15 19:31:52
阅读次数:
90
比较器的使用 1) 比较器的实质就是重载比较运算符 2) 比较器可以很好的应用在特殊标准的排序上 3) 比较器可以很好的应用在根据特殊标准排序的结构上 桶排序思想下的排序 1) 计数排序 2) 基数排序 分析: 1) 桶排序思想下的排序都是不基于比较的排序 2) 时间复杂度为O(N),额外空间负载度 ...
分类:
编程语言 时间:
2020-01-15 14:07:30
阅读次数:
90
insert interval 给定一组不重叠的时间区间,在时间区间中插入一个新的时间区间(如果有重叠的话就合并区间)。 这些时间区间初始是根据它们的开始时间排序的。 示例1: 给定时间区间[1,3],[6,9],在这两个时间区间中插入时间区间[2,5],并将它与原有的时间区间合并,变成[1,5], ...
分类:
编程语言 时间:
2020-01-15 13:26:57
阅读次数:
83
桶排序假设输入数据服从均匀分布,平均情况下它的时间复杂度为O(n)。 桶排序将输入数据的区间均匀分成若干份,每一份称作“桶”。分别对每一个桶的内容进行排序,再按桶的顺序输出则完成排序。 通常使用链表来实现桶。 代码如下:(仅供参考) void Insert(vector<double> & bkt, ...
分类:
编程语言 时间:
2020-01-14 20:41:57
阅读次数:
115
0、算法概述 0.1 算法分类 十种常见排序算法可以分为两大类: 比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。 非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此也称为线性时 ...
分类:
编程语言 时间:
2019-12-30 11:41:00
阅读次数:
101
基数排序属于稳定排序,时间复杂度为O(logRB),桶排序为基数排序的扩展 思路:将整位数切割成不同的数字,然后按每个位数分别比较 过程:设置10个桶子分别从0到9,将每个元素的个位数取出,与桶的数字相对于就放入,然后按照桶顺序依次取出数据,放入原来的数组,接着按照这个步骤取十位数,没有的补0,后面 ...
分类:
编程语言 时间:
2019-12-29 13:16:46
阅读次数:
72
题意 从数组中找出两个不同的整数,使得他们的和恰好为要求得到的数。输出他们的下标。 思路 想法1:最直观的思路——二重循环遍历,时间复杂度$O(n^2)$。太暴力了,考虑优化。 想法2:如果序列是有序的话,可固定 然后从数组中二分查找 。时间复杂度$O(n logn)$。 想法3:利用桶排序的思想, ...
分类:
其他好文 时间:
2019-12-26 21:18:46
阅读次数:
67
参考资源:https://blog.csdn.net/weixin_41190227/article/details/86600821 参考资源:https://www.cnblogs.com/Glory-D/p/7884525.html 总的来说,排序算法共有十大类,即冒泡排序、选择排序、插入排序 ...
分类:
编程语言 时间:
2019-12-23 22:07:31
阅读次数:
118