算法设计与分析课后答案 王晓东算法设计与分析课后答案 王晓东Ifa≠0 D←b*-4*a*C If D>O 2*a x1←(-b+sqrt①D)/temp x2←(-b-sqrt①D))/temp return x1x2 else if D=0 return -b/(2*a else return no rea. roots else/a=0 ifb≠0 return-c/b clsc //a=b=0 f c=o return "no real numbers else return "no real roots 5.描述将十进制整数表达为二进制整数的标准算法 a.用文字描述 b用伪代码描述 解答: a将十进制整数转换为二进制整数的算法 输入:一个正整数n 输出:正整数n相应的二进制数 第一步:用n除以2,余数赋给Kii=0,1,2…),商赋绐n 第二步:如果n=0,则到第三步,否则重复第一步 第三步:将Ki按照i从高到低的顺序输出 b伪代码 算法 DectoBin(n) ∥将十进制整数n转换为二进制整数的算法 /输入:正整数n /输出:该正整数相应的二进制数,该数存放于数组Bin[1n中 while n! =0 do Bin[i=n% n=(int)n/2 i++ while i!=0 do f print Bini]; 9考虑下面这个算法,它求的是数组中大小相差最小的两个元素的差(算法略) 对这个算法做尽可能多的改进 算法 Min distance(A[0.n-1]) /输入:数组A[0.n-1 // L the smallest distance d between two of its elements dmin←∞ fori←0ton-2do forj←i+lton-1do temp←Ai]-A1ll f temp0 Bf,o(a g(n))=@(g(n)) 解 a.这个断言是正确的。它指出如果t(n)的增长率小于或等于g(m)的增长率,那么g(n) 的增长率大于或等于t(n)的增长率 由t(n)≤c·g(n) for al n≥n0, where c>0 则:(-)(n)≤g(n) for all n≥n0 b.这个断言是正确的。只需证明cg(m)sQ(g(n),O(g(n)sO(ag(n)a 设fn)∈Q(ag(m),则有 f(n)scag(n) fo