Design and Analysis of Algorithms_Introduction
I collect and make up this pseudocode from the book:
<<Introduction to the Design and Analysis of Algorithms_Second Edition>> _ Anany Levitin
Note that throughout the paper, we assume that inputs to algorithms fall within their specified ranges and hence require no verfication. When implementing algorithms as programs to be used in actual applications, you should provide such verfications.
About pseudocode: For the sake of simplicity, we omit declarations of variables and use indentation to show the scope of such statements as for, if and while. As you saw later, we use an arrow <- for the assignment operation and two slashes // for comments.
Algorithm Euclid(m, n)
// Computes gcd(m, n) by Euclid's algorithm
// Input: Two nonnegative, not-both-zero integers m and n
// Output: Greatest common divisor of m and n
while n ≠ do
r <- m mod n
m <- n
n <- r
return m
Algorithm Sieve(n)
// Implements the sieve of Eratosthenes
// Input: An integer n ≥ 2
// Output: Array L of all prime numbers less than or equal to n
for p <- to n do A[p] <- p
for p <- to ⌊√n⌋ do
if A[p] ≠ 0 // p hasn't been eliminated on previous passes
j <- p * p
while j ≤ n do
A[j] <- 0 // mark element as eliminated
j <- j + p
// copy the remaining elements of A to array L of the primes
i <- 0
for p <- 2 to n do
if A[p] ≠ 0
L[i] <- A[p]
i <- i + 1
return L
Euclid's algorithm, as presented in Euclid's treatise, uses subtractions rather than integer divisions. Write a pseudocode for this version of Euclid's Algorithm. Here is a nonrecursive version:
Algorithm Euclid2(m, n)
// Computes gcd(m, n) by Euclid's algorithm based on subtractions
// Input: Two nonnegative interges m and n not both equal to 0
// Output: The greatest common divisor of m and n
while n ≠ do
if m < n swap(m, n)
m <- m - n
return m
Write a pseudocode for an algorithm for finding real roots of equation ax^2 + bx + c = 0 for arbitrary real coefficients a, b and c.(You may assume the availability of the square root function sqrt(x).)
Algorithm Quadratic(a, b, c)
// The algorithm finds real roots of equation ax^2 + bx + c = 0
// Input: Real coefficients a, b, c
// Output: The real roots of the equation or a message about their absence
if a ≠
D <- b*b - *a*c
if D >
temp <- *a
x1 <- (-b + sqrt(D)) / temp
x2 <- (-b - sqrt(D)) / temp
return x1, x2
else if D =
return -b / (*a)
else
return 'no real roots'
else // a = 0
if b ≠ return -c / b
else // a = b = 0
if c = return 'all real numbers'
else return 'no real roots'
Write a pseudocode to describe the standard algorithm for finding the binary representation of a positive decimal integer
Algorithm Binary(n)
// The algorithm implements the standard method for finding
// the binary expansion of a positive decimal integer
// Input: A positive decimal integer n
// Output: The list b(k), b(k-1)..., b(1), b(0) of n's binary digits
k <-
while n ≠
bk <- n mod
n <- ⌊n/2⌋
k <- k +
The following algorithm for finding the distance between the two closest elements in an array of numbers.
Algorithm MinDistance(A[..n-])
// Input: An array A[0..n-1] of numbers
// Output: The minimum distance d between two of its elements
dmin <- ∞
for i <- to n- do
for j <- i+ to n- do
temp <- |A[i] - A[j]|
if temp < dmin
dmin <- temp
return dmin
Consider the algorithm for the sorting problem that sorts an array by counting, for each of its elements, the number of smaller elements and then uses this information to put the elements in ins appropriate position in the sorted array
Algorithm ComparisionCountingSort(A[..n-], S[..n-])
// Sorts an array by comparison counting
// Input: Array A[0..n-1] of orderable values
// Output: Array S[0..n-1] of A's elements sorted in nondecreasing order
for i <- to n- do
Count[i] <-
for i <- to n- do
for j <- i+ to n- do
if A[i] < A[j]
Count[j] <- Count[j] +
else
Count[i] <- Count[i] +
for i <- to n- do
S[Count[i]] <- A[i]
New words:
indentation: 缩排 sieve: 筛子 Eratosthenes: a man_埃拉托色尼 treatise: 论文;专著
quadratic: 二次方程式
(End_xpjiang)
Design and Analysis of Algorithms_Introduction的更多相关文章
- Design and Analysis of Algorithms_Decrease-and-Conquer
I collect and make up this pseudocode from the book: <<Introduction to the Design and Analysis ...
- Design and Analysis of Algorithms_Divide-and-Conquer
I collect and make up this pseudocode from the book: <<Introduction to the Design and Analysis ...
- Design and Analysis of Algorithms_Brute Froce
I collect and make up this pseudocode from the book: <<Introduction to the Design and Analysis ...
- Design and Analysis of Algorithms_Fundamentals of the Analysis of Algorithm Efficiency
I collect and make up this pseudocode from the book: <<Introduction to the Design and Analysis ...
- 6.046 Design and Analysis of Algorithms
课程信息 6.046 Design and Analysis of Algorithms
- 斯坦福大学公开课机器学习: machine learning system design | error analysis(误差分析:检验算法是否有高偏差和高方差)
误差分析可以更系统地做出决定.如果你准备研究机器学习的东西或者构造机器学习应用程序,最好的实践方法不是建立一个非常复杂的系统.拥有多么复杂的变量,而是构建一个简单的算法.这样你可以很快地实现它.研究机 ...
- Algorithms: Design and Analysis, Part 1 - Programming Assignment #1
自我总结: 1.编程的思维不够,虽然分析有哪些需要的函数,但是不能比较好的汇总整合 2.写代码能力,容易挫败感,经常有bug,很烦心,耐心不够好 题目: In this programming ass ...
- Algorithms: Design and Analysis, Part 1 - Problem Set 1 - Question 5
最后一个图像,用画图软件绘制了一下,自己的直接主观判断还是有些小问题的 注意:最后的灰色的线条会超过橙色的线条
- EE就业最好的方向是转CS,其次是VLSI/ASIC DESIGN & VERIFICATION
Warald在2012年写过一篇文章<EE现在最好就业的方向是VLSI/ASIC DESIGN VERIFICATION>,三年过去了,很多学电子工程的同学想知道现在形势如何. 首先,按照 ...
随机推荐
- FMS Camera对象设置说明
目录: 1.setQuality(Camera.setQuality方法)2.quality(Camera.quality属性)3.setMode(Camera.setMode方法)4.onActiv ...
- nginx 中 PHP 调用PEAR.php遇到的问题
公司有个老项目,写了很多年了,是在apache 上面跑的,无意间,我想让它跑到nginx上,结果遇到了PEAR.php的问题,先安装pear 基本安富有就是 wget http://pear.php. ...
- Objective-C的新特性
Objective-C的新特性 苹果在今年的 WWDC2012 大会上介绍了大量 Objective-C 的新特性,能够帮助 iOS 程序员更加高效地编写代码.在不久前更新的 Xcode4.4 版本中 ...
- ubuntu安装Lua
1.网站下载LUA包 curl -R -O http://www.lua.org/ftp/lua-5.2.3.tar.gz 2.下载ubuntu的编译支持sudo apt-get install bu ...
- R中创建not-yet-evaluated对象
create not-yet-evaluated object在R中创建 not-yet-evaluated(就是some code we will evaluated later!!)对象;然后执行 ...
- Odoo 中group domain的优化应用
首先一个前提是 odoo 默认情况下 一个menu 只能绑定一个action 而这个action中只有一个domain,而我们的需求是需要点击菜单,然后根据用户所属的组的不同而选择不同的action, ...
- Spring 定时器
<!-- 对定时任务进行引用 --> <bean id="schedulerFactory" class="org.springframework.sc ...
- 安装repcached,并且测试其双向复制是否成功
备注:本实验不仅包括了repcached,还包括了memcache的配置安装 1.1实验环境. 1.2环境准备. 1.3配置一个memcache. 1.3.1安装memcache. 1.3.2启动me ...
- lua的table排序
lua中利用到的排序的基本上就是构造函数(table)了,为了便于和C区分开来,我俗称它为表单. 实例:(原理就是LUA集成的冒泡算法) 排序的一般姿势(对于只包含数字或者只包含字符串的简单数组) t ...
- mysql实验
实验步骤同一台电脑装了两个mysql,端口号不同,mysql5.6安装好之后只有一个my-default的文件,将其中添加一些错误内容,改mysql依然可以启动成功,说明使用的不是该文件,将my-de ...