演算法(第4版) Chapter 1

2021-09-17 05:33:51 字數 1352 閱讀 9085

algorithms fourth edition

written by robert sedgewick & kevin wayne

translated by 謝路雲

public static int indexof(int key, int a) 

return -1;

}

exe 1.1.14

編寫乙個靜態方法 lg(), 接受乙個整型引數n,返回不大於log2(n)的最大整數。不要使用math庫。

public static int lg(int n)

return m;

}

exe 1.1.18

乘法

函式即為乘法的遞迴形式,返回值為a*b

分析:引入二進位制例子

2|4……0

2|2……0

2|1……1

4的二進位制表示為100

eg:3*4

011*  100

11000

將b看做二進位制,當b的二進位制位為1時,與a相乘。由1的位置決定a乘以幾,依次為1,2,4,8,16,...,2^n。將各個乘積累加起來。

(類似於十進位制的乘法運算方式,不同位置的乘法依次會乘以1,10,100,1000,...,10^n,最後累加)

**思想:

1.迴圈判斷

大迴圈判斷b的二進位制位是否為1

a=a*2

繼續看更高一位,直到看完。

return sum。

(類似於綜合法)

public static int multi(int a, int b) 

a *= isys;

}return sum;

}

2.遞迴演算法

遞迴演算法就是return 本次結果+用另外的引數呼叫自己。

(類似於分析法,抽絲剝繭回去)

public static int multi2(int a, int b)

乘方的遞迴形式

public static int power(int a, int b)

用異或的方式交換兩個變數,不使用第三個變數,節省乙個空間。

然而這個函式方法本身並沒有用,因為方法中若傳遞引數為基本型(如int),在方法中對其值的改變並不會在主函式中產生影響。

public static void exch(int a, int b)
區域性變數;全域性變數;靜態變數

課後習題Chapter1

相似之處 這兩個問題都是求最短的路徑 不同之處 最短路徑問題其實是給定了情景並且不需要遍歷所有的點只需要得到乙個點到另外乙個點的最短路徑就可以了,而旅行商人問題則需要遍歷所有的點並求得最短的路程,問題的複雜度不一樣。亦可以找到乙個最短的路徑,但是你無法找到乙個選擇一條送貨車行駛距離最短的送貨順序。其...

Chapter 1 內容梳理

目錄標準輸入與標準輸出 定位符號 scope operator 換行符號 endl 如何輸入eof 類,型別,成員,物件,變數等概念間的關係 從標準輸入讀取 v1,v1 從標準輸出列印求和結果 include includeint main std cout v2 std cout 輸出標準輸入與輸...

讀書筆記 chapter1

1.setw size 的使用方法 include setw int asize const int nm size 128 char user name nm size cin setw nm size user name 如輸入的字元個數超過nm size,則取前nm size 1 個字元給陣列...