题目链接 A Simple Task 题意 给出一个小写字母序列和若干操作。每个操作为对给定区间进行升序排序或降序排序。 考虑权值线段树。 建立26棵权值线段树。每次操作的时候先把26棵线段树上的所有在该区间内的信息清空。 然后再通过类似计数排序的方式从左往右(或从右往左)依次塞进去。 ...
分类:
其他好文 时间:
2017-10-31 18:54:49
阅读次数:
206
列表list 增 append insert 插入(根据索引) extend 迭代的添加 列表的删除 pop 按照索引删除,有返回值 remove 直接删除元素 del 按照索引删除 可切片删除 clear 清空列表 列表的改 先删除,迭代着添加 根据索引,直接赋值 count 列表计数 排序(列表 ...
分类:
编程语言 时间:
2017-10-29 23:25:10
阅读次数:
374
核心代码 应用场合:排序的数据属于同一个范围之内,分配得非常密集,并且重复的次数很多。 算法分析: 最好时间复杂度:O(n) 平均时间复杂度:O(n) 最坏时间复杂度:O(n) 空间复杂度:O(n) 稳定性:不稳定 ...
分类:
编程语言 时间:
2017-10-22 21:00:28
阅读次数:
228
听说有十大排序算法,先学习一下快速排序和计数排序算法。 一:快速排序 快速排序主要就是每一个找到当前取出来的标尺的数的位置,然后把小于它的数放在左边(从小到大排),把大于它的数放在右边。然后利用递归分左右继续找位置放数字,这个过程有点类似之前的根据前序和中序找后序的题目。递归的出口就是当只有一个数的 ...
分类:
编程语言 时间:
2017-09-30 17:45:00
阅读次数:
223
1 计数排序,稳定 复杂度o(k + n) public static int[] countingSort(int[] nums) { int n = nums.length; int k = 0; for (int i = 0; i < n; i++) { k = Math.max(k, num ...
分类:
编程语言 时间:
2017-09-17 13:23:18
阅读次数:
223
题目大意: 求多个字符串的LCS。 思路: 同SPOJ-LCS2,不过因为SPOJ上数据比较水,当时用错误的写法过掉了,这次用正确的写法重新过了一遍。 拓扑排序按照每个状态的len值,用计数排序实现。 每个状态往上更新时,应该对std::min(s[p].maxlen,s[q].len)取max(每 ...
分类:
其他好文 时间:
2017-09-14 13:31:21
阅读次数:
266
参考博客:常用排序算法总结(二) 计数排序 counting sort 1.计数排序是一种非常快捷的稳定性强的排序方法,时间复杂度O(n+k),其中n为要排序的数的个数,k为要排序的数的组大值。计数排序对一定量的整数排序时候的速度非常快,一般快于其他排序算法。但计数排序局限性比较大,只限于对整数进行 ...
分类:
编程语言 时间:
2017-09-05 01:49:27
阅读次数:
283
计数排序并非一种基于比较进行的排序,它是计算一个序列中的值在正常排好序中的序列所处的位置,怎么求解一个数的位置呢?就是利用下脚标进行求解,新建一个数组resu[],数组的长度要比序列中的最大值大1,数组中的值全部初始化为0,然后遍历原序列,将原序列的值i作为新建数组resu[]的下脚表,对resu[ ...
分类:
编程语言 时间:
2017-08-23 23:00:44
阅读次数:
199
8.1 排序算法的下界 定理8.1 在最坏情况下,任何比较排序算法都需要做Ω(nlgn)次比较。 推论8.2 堆排序和归并排序都是渐进最优的比较排序算法。 8.2 计数排序 计数排序假设n个输入元素中的每一个都是在0到k区间内的一个整数,其中k为某个整数。当k=O(n)时,排序的运行时间为θ(n)。 ...
分类:
编程语言 时间:
2017-08-16 17:05:12
阅读次数:
128