【题目描述】给定一个字符串,计算其不同的子串个数。【输入格式】一行一个仅包含大写字母的字符串,长度=n或者所有后缀的排名都不同。 然后正常情况下k增加logN次,每次如果用计数排序只要O(N),一共O(NlogN)。 但是不会写计数排序啊QAQ。。所以用快排好了。。多加一个log,一般不会被卡的.....
分类:
其他好文 时间:
2015-03-30 22:58:49
阅读次数:
277
一:计数排序
(1)当输入的元素是 n 个 0 到 k 之间的整数时,它的运行时间是 Θ(n + k)。计数排序不是比较排序,排序的速度快于任何比较排序算法。由于用来计数的数组C的长度取决于待排序数组中数据的范围(等于待排序数组的最大值与最小值的差加上1),这使得计数排序对于数据范围很大的数组,需要大量时间和内存。例如:计数排序是用来排序0到100之间的数字的最好的算法,但是它不适合按字母顺序排...
分类:
编程语言 时间:
2015-03-29 16:39:57
阅读次数:
212
基数排序思想完全不同于以前的排序算法,可以说,基数排序也叫做多关键字排序,基数排序是一种借助“多关键字排序”的思想来实现“单关键字排序”的内部排序算法。两种方式:1、最高位优先,先按照最高位排成若干子序列,再对子序列按照次高位排序2、最低位优先:不必分子序列,每次排序全体元素都参与,不比较,而是通过...
分类:
编程语言 时间:
2015-03-29 01:51:12
阅读次数:
156
选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法,冒泡排序、插入排序、归并排序和基数排序是稳定的排序算法。冒泡法:这是最原始,也是众所周知的最慢的算法了。他的名字的由来因为它的工作看来象是冒泡: 复杂度为O(n*n)。当数据为正序,将不会有交换。复杂度为O(0)。直接插入排序:O(n*n)选择...
分类:
编程语言 时间:
2015-03-28 11:32:22
阅读次数:
155
UVA - 10474
Where is the Marble?
Time Limit: 3000MS
Memory Limit: Unknown
64bit IO Format: %lld & %llu
Submit Status
Description
Raju and Meena love to play ...
分类:
编程语言 时间:
2015-03-21 09:53:59
阅读次数:
198
桶排序算法主要使用在数据分布均匀的情况,这里假设输入数据的关键字全部分布在0~100之间,因此我们这里划分为十个同[0..9],存储排序,B[i][]中存放x/10==i的元素,再对*B[i]进行插入排序,复制到数组A中结束。插入排序代码(前面以给出):int InsertSort(int *a,int n){
//对长度为n的数组,进行插入排序,下标0~n-1
int i,j,ke...
分类:
编程语言 时间:
2015-03-20 23:48:25
阅读次数:
195
快排:适用条件:方便...只要数字不是很多复杂度:O(nlogn) 每一层n复杂度,共logn层原理:利用一个随机数与最后面一个数交换,那么这个随机数就到了最后一位,然后循环,如果前面的数大于最后一个数,那么把这个数放到前面去,经过一次排序之后,前面的数都是大于最后一个的,然后对1到k和k+1到n进...
分类:
编程语言 时间:
2015-03-20 20:22:15
阅读次数:
212
题目:Sort color
/*LeetCode sort colors
题目:输入一个数组,包含0,1,2分别代表红白蓝三种颜色,要求按照0,1,2的顺序,将同类颜色的连续排列
思路:计数排序,是一个遍历两遍的方法:可以先统计每种的数量,之后直接将这一范围内的所有值都赋值为相应的数字即可
遍历一遍的话可以在遍历的同时分别与0和2比较,从头和尾一起交换,1的在中间不用做处理;
*
*/
...
分类:
编程语言 时间:
2015-03-20 14:28:40
阅读次数:
224
算法说明桶排序的逻辑其实特别好理解,它是一种纯粹的分而治之的排序方法。举个例子简单说一下大家就知道精髓了。假如对11,4,2,13,22,24,20 进行排序。那么,我们将4和2放在一起,将11,13放在一起,将22,24,20放在一起。 然后将这三部分分别排序(可以根据实现情况任意选择排序方式,我...
分类:
编程语言 时间:
2015-03-20 08:07:50
阅读次数:
168
这几天一直在写排序算法,从插入,冒泡,选择到归并和快速再到计数和基数排序。今天来写下计数排序和基数排序吧。
计数排序:对于一组小于k的数组,进行排序。这里要保证输入的关键值在[0..k]之间。貌似很简单,我们先不管什么是计数排序CountSort(A,1,n),先来看一下一段代码。
CountPrint(int *A,int n,int k)代码:void CountPrint(int *A,i...
分类:
编程语言 时间:
2015-03-19 13:18:52
阅读次数:
150