算法
Study_2011
这个作者很懒,什么都没留下…
展开
-
面试常见算法习题1
/*2010年 10月18日下午 July--------------------------------1.把二元查找树转变成排序的双向链表 题目:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。要求不能创建任何新的结点,只调整指针的指向。 10 / \ 6 14 / \ / \4 8 12 16 转换成双向链表 4=6=8=1转载 2013-10-01 22:38:57 · 686 阅读 · 0 评论 -
面试常见算法习题2
/*2010/10/18 July2.设计包含min函数的栈。定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。要求函数min、push以及pop的时间复杂度都是O(1)。*//*这道题,很不少人 讨论过不少了。为了达到 那个苛刻的 条件:要求函数min、push以及pop的时间复杂度都是O(1)。着实,费了不少心思。都说,关键是,建立辅助栈,或者借用链表转载 2013-10-01 23:01:41 · 726 阅读 · 0 评论 -
面试常见算法习题3
/*3.求子数组的最大和题目:输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,因此输出为该子数组的和18。*///July 2010/10/18#inc转载 2013-10-01 23:07:42 · 795 阅读 · 0 评论 -
算法之斐波那契数列
3种方法求解斐波那契数列题目:定义Fibonacci数列如下:分析1:看到斐波那契数列几乎所有的程序员在第一时间的反应都是“递归”,没错了,作为和汉诺塔一样的经典递归问题,我们几乎毫不犹豫就可以写出如下的代码: 1 #include 2 #includestring> 3 using namespace std; 4 5 long Fibonacci(un转载 2013-10-04 00:40:32 · 824 阅读 · 0 评论 -
白话经典算法系列之七 堆与堆排序
堆排序与快速排序,归并排序一样都是时间复杂度为O(N*logN)的几种常见排序方法。学习堆排序前,先讲解下什么是数据结构中的二叉堆。二叉堆的定义二叉堆是完全二叉树或者是近似完全二叉树。二叉堆满足二个特性:1.父结点的键值总是大于或等于(小于或等于)任何一个子节点的键值。2.每个结点的左子树和右子树都是一个二叉堆(都是最大堆或最小堆)。当父结点的键值总是大于或等于任何一个转载 2013-09-21 23:58:48 · 772 阅读 · 0 评论 -
素数
埃拉托斯特尼筛法一、简介 埃拉托斯特尼筛法,简称埃氏筛或爱氏筛,是一种由埃及数学家埃拉托斯特尼所提出的一种简单检定素数的算法。编辑本段二、步骤 我们详细列出算法如下: 第一步,列出如下这样以2开头的序列: 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25转载 2013-09-21 23:13:33 · 751 阅读 · 0 评论