1.桶排序:这个算法就好比有11个桶,编号从0~10。每出现一个数,就将对应编号的桶中的放一个小旗子,最后只要数数每个桶中有几个小旗子就OK了。(http://blog.jobbole.com/100361/) 2.冒泡排序 ...
分类:
编程语言 时间:
2016-05-18 17:53:54
阅读次数:
136
我也不知道今天这题目纠结半天我在纠结个啥,题目要求对一个公司所有员工的年龄排序,只能申请O(n)大小的辅助空间。然后看到题目里面的解法大致思路是利用辅助空间记录各个年龄的出现次数,然后接下来的代码硬是读了半天。 之前看到题目后的意思是对公司的员工年龄排序,比如{59,25,23,46,32,15,6 ...
分类:
编程语言 时间:
2016-05-18 17:51:54
阅读次数:
450
怎么记忆稳定性: 总过四大类排序:插入、选择、交换、归并(基数排序暂且不算) 比较高级一点的(时间复杂度低一点得)shell排序,堆排序,快速排序(除了归并排序)都是不稳定的,在加上低一级的选择排序是不稳定的。 比较低级一点的(时间复杂度高一点的)插入排序, 冒泡排序,归并排序,基数排序都是稳定的。 ...
分类:
编程语言 时间:
2016-05-18 17:47:06
阅读次数:
725
假设原来有一串数值如下所示: 73, 22, 93, 43, 55, 14, 28, 65, 39, 81 首先根据个位数的数值,在走访数值时将它们分配至编号0到9的桶子中: 0 1 81 2 22 3 73 93 43 4 14 5 55 65 6 7 8 28 9 39 第二步 第二步 接下来将 ...
分类:
编程语言 时间:
2016-05-18 17:29:52
阅读次数:
173
对于一个int数组,请编写一个计数排序算法,对数组元素排序。 给定一个int数组A及数组的大小n,请返回排序后的数组。 测试样例: 代码: ...
分类:
编程语言 时间:
2016-05-16 20:02:14
阅读次数:
225
对于一个int数组,请编写一个基数排序算法,对数组元素排序。 给定一个int数组A及数组的大小n,请返回排序后的数组。保证元素均小于等于2000。 测试样例: 代码: ...
分类:
编程语言 时间:
2016-05-16 19:46:58
阅读次数:
158
引言:
老师已经是第三次跟我们讲排序了,可想而知排序它的重要性,这三种基本排序的方式值得我们思考和研究,理解其中的思想。
简述:
概念:
将杂乱无章的数据元素,通过一定的方法按关键字顺序排列的过程叫做排序
常见排序算法:
快速排序、希尔排序、堆排序、直接选择排序不是稳定的排序算法,而基数排序、冒泡排序、直接插入排序、折半插入排序、归并排序是稳定的排序算法。...
分类:
编程语言 时间:
2016-05-13 04:24:44
阅读次数:
264
用Tyvj上的快速排序测试了一下,1s AC...
分类:
编程语言 时间:
2016-05-13 00:54:48
阅读次数:
348
前几篇博客排序算法都是 用的比较排序,时间复杂度最低的是 O(nlgn),这也是比较排序最优的时间复杂度。
这次计数排序用的是线性时间复杂度的排序,也就是说不是通过比较来确定排序顺序的。
计数排序是 假设n个元素中的每一个都是在0到k区间内的一个整数,也就是整个数组里最大的数是 k,这是我们需要一个数组B[]来存放排序的输出,用C[]来提供临时存储的空间。其中,特别有意思的是,C[i],它保存...
分类:
编程语言 时间:
2016-05-13 00:45:53
阅读次数:
145
题意:
给一个长度n的字符串,q次操作,每次操作把[l,r]排序,k=0非递增,k=1非递减。
题解:
采用计数排序的复杂度是O(n?q)O(n*q),无法通过,但有所启示。
可以看出计数就是区间求和,排序就是区间更新,可以用线段树维护。
做法是建立26棵线段树,第i棵树维护第i个字母的位置信息。
计数时,在26棵线段树内分别做一次查询,排序时根据递增还是递减,把相应的区间赋值为相应的字...
分类:
其他好文 时间:
2016-05-12 21:06:16
阅读次数:
211