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>,三年过去了,很多学电子工程的同学想知道现在形势如何. 首先,按照 ...
随机推荐
- 【BZOJ】1406: [AHOI2007]密码箱
http://www.lydsy.com/JudgeOnline/problem.php?id=1406 题意:求$0<=x<n, 1<=n<=2,000,000,000, 且 ...
- FS_11C14温湿度传感器(二)
作者:刘老师,华清远见嵌入式学院讲师. 在FS_11C14平台DHT11传感器程序: /******************************************************** ...
- highcharts 时间少8小时问题
Highcharts 中默认开启了UTC(世界标准时间),由于中国所在时区为+8,所以经过 Highcharts 的处理后会减去8个小时. 如果不想使用 UTC,有2种方法可供使用: 1.在使用Hig ...
- 在Eclipse中使用JSHint检查JavaScript
之前使用 JSlint 来校验 JavaScript 代码,发现灵活性不够,因此改用 JSHint.按照官方的说法,JSHint 是一个社区驱动(community-driven)的工具,用于检测Ja ...
- javamail 收邮件并解析附件
package com.zz.mail; import java.io.*; import java.text.*; import java.util.*; import javax.mail.*; ...
- Maven构建简单的多模块项目
复制于http://www.cnblogs.com/luxh/p/3506750.html 做个记录 一般web项目会进行分模块开发.这里简单分为domain(领域层).persist(持久层).se ...
- Windows8.1自定义快捷方式添加到开始屏幕
Windows8.1自定义快捷方式添加到开始屏幕 将快捷方式复制到如下路径,在开始屏幕的所有中找到对应快捷方式,右键选择添加到开始屏幕即可. C:\Users\%USERNAME%\AppData\R ...
- jsTree 的简单用法--异步加载和刷新数据
首先这两个文件是必须要引用的,还有就是引用 jQuery 文件就不说了: <link href="/css/plugins/jsTree/style.min.css" rel ...
- CVTRES : fatal error CVT1100 , fatal error LNK1123:
CVTRES : fatal error CVT1100: duplicate resource. type:DIALOG, name:901, language:0x0804LINK : fatal ...
- Excel文件读写
C#读写Excel的方式有好几种,具体参考文章: http://www.cnblogs.com/huipengkankan/archive/2011/07/28/2120407.html 昨天大致研究 ...