算法
EriclLee
这个作者很懒,什么都没留下…
展开
-
C++算法题
1、实现内存拷贝函数 2、声明一个只能创建一个唯一对象的类 3、实现单链表逆置 4、找出字符串的最长子串,要求字串的所有字符相同,如:"abcdeeefgh"结果是"eee"。 5、找出数组的所有子集,要求子集的所有元素和为一定值,如{1,2,3,4,5,8}有子集{1,2,3,4}、{2,8}等。 1.最近刚刚看完林锐的《高质量程序设计指南--C/C++》,里面正好有这个例子,呵呵 vo转载 2009-07-16 11:06:00 · 2143 阅读 · 1 评论 -
把二元查找树转变成排序的双向链表
题目:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。要求不能创建任何新的结点,只调整指针的指向。 比如将二元查找树 10 / /转载 2009-07-17 16:25:00 · 1386 阅读 · 0 评论 -
程序员面试题精选(03)-求子数组的最大和
题目:输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,因此输出为该子数组的和18。分析:本题最初为2005年浙江大学计算机系的考研题的最后一道程序设计题,在2006年里包括g转载 2009-07-18 14:06:00 · 1050 阅读 · 0 评论 -
设计包含min函数的栈
题目:定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。要求函数min、push以及pop的时间复杂度都是O(1)。 分析:这是去年google的一道面试题。我看到这道题目时,第一反应就是每次push一个新元素时,将栈里所有逆序元素排序。这样栈顶元素将是最小元素。但由于不能保证最后push进栈的元素最先出栈,这种思路设计的数据结构已经不是一个栈了。在栈里添加一个成员变量存放最小元素(转载 2009-07-17 17:11:00 · 604 阅读 · 0 评论 -
各种排序算法的稳定性和时间复杂度小结 收藏
<br /><br />选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法,<br />冒泡排序、插入排序、归并排序和基数排序是稳定的排序算法。<br />排序法 平均时间 最差情形 稳定度 额外空间 备注 <br />冒泡 O(n2) O(n2) 稳定 O(1) n小时较好 <br />交换 O(n2) O(n2) 不稳定 O(1) n小时较好 <br />选择 O(n2) O(n2) 不稳定 O(1) n小时较好 <br />插入 O(n2) O(n2) 稳定 O(1) 大部转载 2010-07-08 11:36:00 · 648 阅读 · 0 评论