第一篇 基本概念 01 什么是数据结构.md 02 什么是算法.md 03 应用实例 最大子列和问题.md 第二篇 线性结构 01 线性表及其实现.md 02 堆栈.md 03 队列.md 04 应用实例 多项式加法运算.md 05 小白专场 多项式乘法与加法运算 c语言实现.md 05 小白专场 ...
分类:
编程语言 时间:
2019-08-25 12:00:45
阅读次数:
92
基本思想:BinSort想法非常简单,首先创建数组A[MaxValue];然后将每个数放到相应的位置上(例如17放在下标17的数组位置);最后遍历数组,即为排序后的结果。 过程: 问题: 当序列中存在较大值时,BinSort 的排序方法会浪费大量的空间开销。 基本思想: 基数排序是在BinSort的 ...
分类:
编程语言 时间:
2019-08-23 13:42:41
阅读次数:
115
排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。用一张图概括: 关于时间复杂度: 平方阶 ...
分类:
编程语言 时间:
2019-08-21 11:20:44
阅读次数:
80
```cpp include using namespace std; typedef long long ll; const int MAXK = 28; const int K = 4; const int BASE = 1 k) & (BASEMO)]++; for(int i = 1; i ...
分类:
编程语言 时间:
2019-08-20 00:40:37
阅读次数:
93
基数排序(radix sort)属于“分配式排序”(distribution sort),又称“桶子法”(bucket sort)或bin sort,顾名思义,它是透过键值的部份资讯,将要排序的元素分配至某些“桶”中,藉以达到排序的作用,基数排序法是属于稳定性的排序,其时间复杂度为O (nlog(r ...
分类:
编程语言 时间:
2019-08-17 12:52:39
阅读次数:
102
基本思想 基数排序是借助“分配”和“收集”两种操作对单逻辑关键字进行排序的一种内部排序方法。 数组下标从0-9,每个数组元素是一个链表 比如对一些三位数以内的树排序,先将个位的数值插入对应的下标的链表中,然后再放回原数组,放回的顺序和插入的顺序一致,将链表清空,再将十位的数字插入对应的下标的链表中, ...
分类:
编程语言 时间:
2019-08-15 23:11:37
阅读次数:
176
好程序员Java学习路线分享5分钟了解基数排序,前言:基数排序无需进行比较和交换,而是利用分配和收集两种基本操作实现排序。基数排序分为两种:第一种是LSD,从最低位开始排序;第二种是MSD,从最高位开始排序。基数排序思想介绍分配:对于数字,每位的取值范围是0-9,因此需要10个容器(我们可以将其称为桶),这10个桶标号为0-9。每趟排序时,我们取每一个元素在该位的数值依次放入桶中。收集:在一趟
分类:
编程语言 时间:
2019-08-07 17:39:42
阅读次数:
129
稳定的排序算法:冒泡排序、插入排序、归并排序和基数排序。 不是稳定的排序算法:选择排序、快速排序、希尔排序、堆排序。 冒泡 选择 选择排序的思想是将序列分为有序和无序两个部分,不断从无序序列中选择最小的增加到有序序列中,这样,序列就从小到大排列整齐。 插入排序 插入排序原理是将当前元素与前面的元素比 ...
分类:
编程语言 时间:
2019-07-27 15:41:20
阅读次数:
127
因为本人几乎不会后缀数组,所以遇到这种SA的模板题也要拿SAM解决。 还是有一点思维难度的。 首先按照国际惯例,建反串的SAM。 然后对于这个反串,我们考虑两个前缀哪一个字典序小:因为是串是反的,所以要从后往前比较,那么第一个不相同的字符一定是两个前缀在后缀树上的节点的lca的前一位。记其中一个节点 ...
分类:
编程语言 时间:
2019-07-14 15:14:08
阅读次数:
179