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的更多相关文章

  1. Design and Analysis of Algorithms_Decrease-and-Conquer

    I collect and make up this pseudocode from the book: <<Introduction to the Design and Analysis ...

  2. Design and Analysis of Algorithms_Divide-and-Conquer

    I collect and make up this pseudocode from the book: <<Introduction to the Design and Analysis ...

  3. Design and Analysis of Algorithms_Brute Froce

    I collect and make up this pseudocode from the book: <<Introduction to the Design and Analysis ...

  4. 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 ...

  5. 6.046 Design and Analysis of Algorithms

    课程信息 6.046 Design and Analysis of Algorithms

  6. 斯坦福大学公开课机器学习: machine learning system design | error analysis(误差分析:检验算法是否有高偏差和高方差)

    误差分析可以更系统地做出决定.如果你准备研究机器学习的东西或者构造机器学习应用程序,最好的实践方法不是建立一个非常复杂的系统.拥有多么复杂的变量,而是构建一个简单的算法.这样你可以很快地实现它.研究机 ...

  7. Algorithms: Design and Analysis, Part 1 - Programming Assignment #1

    自我总结: 1.编程的思维不够,虽然分析有哪些需要的函数,但是不能比较好的汇总整合 2.写代码能力,容易挫败感,经常有bug,很烦心,耐心不够好 题目: In this programming ass ...

  8. Algorithms: Design and Analysis, Part 1 - Problem Set 1 - Question 5

    最后一个图像,用画图软件绘制了一下,自己的直接主观判断还是有些小问题的 注意:最后的灰色的线条会超过橙色的线条

  9. EE就业最好的方向是转CS,其次是VLSI/ASIC DESIGN & VERIFICATION

    Warald在2012年写过一篇文章<EE现在最好就业的方向是VLSI/ASIC DESIGN VERIFICATION>,三年过去了,很多学电子工程的同学想知道现在形势如何. 首先,按照 ...

随机推荐

  1. LINQ to Entities 事务简单例子

    默认LINQ to Entities会使用隐式事务,即:对于每一个savechanges都分开在单独的事务之中. 也可以显式地指定事务: using (var db = new TestEntitie ...

  2. Install the Maven in your computer

    While, this blog will talk about installing the Maven in your computer. There are three steps as fol ...

  3. SpringMVC异常处理机制详解[附带源码分析]

    目录 前言 重要接口和类介绍 HandlerExceptionResolver接口 AbstractHandlerExceptionResolver抽象类 AbstractHandlerMethodE ...

  4. GUI之绘画控制

    一.绘制的动力 GUI的绘画是根据消息动作驱动的 主循环应该是 二.绘制的过程 绘画过程应该是这样的: 首先窗口存在上下层关系-> 在绘制时应该从底部窗口开始绘制,逐一绘制 下面是一些特殊的窗口 ...

  5. Hbase1.0 客户端api

    最近在试用Hbase1.0的客户端API,发觉变化还是挺大(以前版本也不熟).到处都是deprecated. 现在应该是这样子: Configuration  conf = HBaseConfigur ...

  6. Android中Activity的四种启动模式

    要了解Android的启动模式先要了解一下Activity的管理方式: 1.Activity的管理机制 Android的管理主要是通过Activity栈来进行的.当一个Activity启动时,系统根据 ...

  7. python中的进程、线程(threading、multiprocessing、Queue、subprocess)

    Python中的进程与线程 学习知识,我们不但要知其然,还是知其所以然.你做到了你就比别人NB. 我们先了解一下什么是进程和线程. 进程与线程的历史 我们都知道计算机是由硬件和软件组成的.硬件中的CP ...

  8. 调试WEB APP多设备浏览器

    方法:adobe shadow  \ opera远程调试\ weinre adobe shadow: 我们经常使用Firefox的firebug或者Chrome的开发人员工具进行Web调试页面,Jav ...

  9. 所有设备的CSS像素

    mydevice.io Mobile devices, in Responsive Web Design, relate to a core value which is the value of C ...

  10. Javascript 中的一些关于时间的操作【转】

    1.时间对象和一些简单操作函数 var myDate = new Date(); myDate.getYear();       //获取当前年份(2位) myDate.getFullYear(); ...