
算法学习
文章平均质量分 78
zslInSz
这个作者很懒,什么都没留下…
展开
-
二叉树杂记
1、完全二叉树若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。完全二叉树是由满二叉树而引出来的。对于深度为K的,有N个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结点一一对应时称之为完全二叉树。若一棵二叉树至多只有最下面的两层上的结点的度数可以小于2,并且最下层上的原创 2013-01-04 10:23:32 · 362 阅读 · 0 评论 -
单链表建立和逆序
创建链表时需要主要的几点1、插入创建链表时应该传递指向表头的指针的指针,因为插入的值有可能放在链表的最前面,形成新的表头。2、单链表逆序,其实是把一个链表分成两段进行的。取出表头,使其指向下一个结点的指针为null。此时原链表中的第二个结点成为了原链表中的头结点。然后取出第二个结点,依次进行。到最后的时候需要修改单链表最后的一个节点变成表头,这样就完成了单链表逆序。代码如下#inc原创 2013-02-21 15:25:52 · 941 阅读 · 0 评论 -
排序算法总结
快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,再加上快速排序思想----分治法也确实实用,因此很多软件公司的笔试面试,包括像腾讯,微软等知名IT公司都喜欢考这个,还有大大小的程序方面的考试如软考,考研中也常常出现快速排序的身影。 总的说来,要直接默写出快速排序还是有一定难度的,因为本人就自己的理解对快速排序作了下白话解释,希望对大家理解有帮助,达到快原创 2012-12-29 10:48:19 · 494 阅读 · 0 评论 -
旋转字符串问题
1、定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部。如把字符串 abcdef 左旋转 2 位得到字符串 cdefab。请实现字符串左旋转的函数,要求长度为 n 的字符串操作的时间复杂度为O(n),空间复杂度为 O(1)。2、思路假设原数组序列为 abcd1234,要求变换成的数组序列为 1234abcd,即循环右移了 4 位。比较之后,不难看出,其中有两段的顺序是不变的转载 2013-03-07 09:58:32 · 208 阅读 · 0 评论 -
旋转字符串问题
1、定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部。如把字符串 abcdef 左旋转 2 位得到字符串 cdefab。请实现字符串左旋转的函数,要求长度为 n 的字符串操作的时间复杂度为O(n),空间复杂度为 O(1)。2、思路假设原数组序列为 abcd1234,要求变换成的数组序列为 1234abcd,即循环右移了 4 位。比较之后,不难看出,其中有两段的顺序是不变的转载 2013-03-07 10:05:22 · 594 阅读 · 0 评论 -
KMP算法分析
转自 http://www.ruanyifeng.com/blog/2013/05/Knuth%E2%80%93Morris%E2%80%93Pratt_algorithm.html 字符串匹配是计算机的基本任务之一。举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD"?许多算法可以完成这个任务,Kn转载 2014-03-13 21:29:33 · 478 阅读 · 0 评论 -
KMP算法实现
#include #include #include using namespace std;int * cover(string &pattern){ /*pattern = "abcdab"*/ int size = pattern.size(); int *p = new int[size]; int length = 0,r = size;原创 2014-03-13 21:24:26 · 412 阅读 · 0 评论 -
小顶堆排序的实现
1、堆排序 第一步都是先建堆,在一个数组上建堆其实就是dui原创 2014-05-07 15:04:16 · 1557 阅读 · 0 评论