数据结构与算法
文章平均质量分 84
cug_marvel
他强任他强,清风拂山岗
展开
-
选择排序—堆排序(Heap Sort)
堆的定义 具有n个元素的序列(k1,k2,…,kn),当且仅当满足 时称之为堆。由堆的定义可以看出,堆顶元素(即第一个元素)必为最小项(小顶堆)。 若以一维数组存储一个堆,则堆对应一棵完全二叉树,且所有非叶结点的值均不大于(或不小于)其子女的值,根结点(堆顶元素)的值是最小(或最大)的。如: 大顶堆序列:(96, 83,27,38,11,09) 小顶堆序列:(原创 2015-05-11 17:23:36 · 593 阅读 · 0 评论 -
交换排序—快速排序(Quick Sort)
基本思想通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行分割,直到所有的数据都呈有序排列为止。其基本思路如下图所示:具体过程在具体进行排序的时候,我们首先需要找到一个基准值,一般都是选择第一个数作为基准值:有了基准值过后,首先与最后一个数据进行比较,若大于最后一个数据,则互换位置,否则位置保持不变,继续与倒数第二原创 2015-05-11 21:20:42 · 427 阅读 · 0 评论 -
链表追赶问题
第一节:求链表倒数第k个节点的值题目:输入一个单向链表,输出该链表中倒数第k个结点,链表的倒数第0个结点为链表的尾指针 分析:首先这个链表时单向链表,并且我们也不知道链表的长度,那么仅仅凭借一个指针来找到倒数第k个节点,就需要知道链表的长度,因此需要先遍历整个链表,得到链表的长度过后,然后再从头结点开始寻找,这种方法显然很笨,那么我们可以用比较简单的方法吗?答案是肯定的,若当一个指针直到最后一个原创 2015-05-05 21:19:11 · 352 阅读 · 0 评论 -
后缀数组
定义子串:字符串S的子串r[i..j],i≤j,表示r串中从i到j这一段,也就是顺次排列r[i],r[i+1],…,r[j]形成的字符串。后缀:后缀是指从某个位置i开始到整个串末尾结束的一个特殊子串。字符串r的从第i个字符开始的后缀表示为Suffix(i),也就是Suffix(i)=r[i..len(r)]。后缀数组:后缀数组SA是一个一维数组,它保存1..n的某个排列SA[1],SA[2],……,原创 2015-05-07 20:46:20 · 356 阅读 · 0 评论