摘要:由的位置決定乘以幾,依次為,,,,,。遞歸算法遞歸算法就是本次結果用另外的參數調用自己。然而這個函數方法本身并沒有用,因為方法中若傳遞參數為基本型如,在方法中對其值的改變并不會在主函數中產生影響。
Algorithms Fourth Edition
Written By Robert Sedgewick & Kevin Wayne
Translated By 謝路云
public static int indexOf(int key, int[] a) { int lo = 0; int hi = a.length - 1; // 記住要-1 int mid; while (lo <= hi) { //記住有等號 mid = (lo + hi) / 2; if (key < a[mid]) hi = mid - 1; else if (key > a[mid]) lo = mid + 1; else return mid; } return -1; }練習題 求對數
Exe 1.1.14
編寫一個靜態方法 lg(), 接受一個整型參數N,返回不大于log2(N)的最大整數。不要使用Math庫。
public static int lg(int N){ // m = log a N int a=2; //a為底數 int m=0; for(;N>1;N/=a){ m++; } 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{若是,sum+=a;若不是,不需要做任何操作,因為加0不影響}
a=a*2
繼續看更高一位,直到看完。
return sum。
(類似于綜合法)
public static int multi(int a, int b) { int isys = 4; //n進制 int sum=0; //這個不能寫在for里面,因為for里面聲明的為局部變量。 for (; b != 0; b /= isys) { if (b % isys != 0) { sum += a * (b % isys); } a *= isys; } return sum; }
2.遞歸算法
遞歸算法就是return 本次結果+用另外的參數調用自己。
(類似于分析法,抽絲剝繭回去)
public static int multi2(int a, int b) { if (b == 0) return 0; if (b % 2 == 0) return multi(2*a, b/2); return multi(2*a, b/2) + a; }
乘方的遞歸形式
public static int power(int a, int b) { if (b == 0) return 1; if (b % 2 == 0) return power(a*a, b/2); return power(a*a, b/2) * a; }交換
用異或的方式交換兩個變量,不使用第三個變量,節省一個空間。
然而這個函數方法本身并沒有用,因為方法中若傳遞參數為基本型(如int),在方法中對其值的改變并不會在主函數中產生影響。
public static void exch(int a, int b){ a=a^b; b=a^b; a=a^b; }待補充
局部變量;全局變量;靜態變量
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/66435.html
摘要:區別把數字對應成字符。這個是字符串的第位。稍作修改可適應不等長的字符串。因此增加一個組別,記錄字符為空的頻次。 Algorithms Fourth EditionWritten By Robert Sedgewick & Kevin WayneTranslated By 謝路云Chapter 5 Section 1 字符串排序 參考資料http://blog.csdn.net/gua...
摘要:堆中位置的結點的父節點的位置為,子節點的位置分別是和一個結論一棵大小為的完全二叉樹的高度為用數組堆實現的完全二叉樹是很嚴格的,但它的靈活性足以使我們高效地實現優先隊列。 Algorithms Fourth EditionWritten By Robert Sedgewick & Kevin WayneTranslated By 謝路云Chapter 2 Section 4 優先隊列 ...
摘要:離心率計算題目釋義計算點的離心率,圖的直徑,半徑,中心計算圖的圍長定義點的離心率圖中任意一點,的離心率是圖中其他點到的所有最短路徑中最大值。圖的中心圖中離心率長度等于半徑的點。改動離心率計算,在遍歷中增加的賦值即可。 離心率計算 4.1.16 The eccentricity of a vertex v is the the length of the shortest path fr...
摘要:在實際的測試中,算法的運行效率也比算法高左右。此外,該算法與求無向圖的雙連通分量割點橋的算法也有著很深的聯系。學習該算法,也有助于深入理解求雙連通分量的算法,兩者可以類比組合理解。固屬于同一連通分支。 參考資料http://blog.csdn.net/acmmmm/a...https://www.byvoid.com/blog/s...http://blog.csdn.net/noth...
摘要:算法圖示代碼復雜度時間初始化優先隊列,最壞情況次比較每次操作成本次比較,最多還會多次和次操作,但這些成本相比的增長數量級可忽略不計詳見空間 Algorithms Fourth EditionWritten By Robert Sedgewick & Kevin WayneTranslated By 謝路云Chapter 4 Section 3 最小生成樹 定義 樹是特殊的圖 圖的生...
閱讀 1651·2021-09-22 15:21
閱讀 2871·2021-09-09 09:32
閱讀 2698·2021-09-02 09:52
閱讀 3312·2019-08-30 14:02
閱讀 2227·2019-08-26 13:25
閱讀 1459·2019-08-26 13:24
閱讀 1610·2019-08-26 10:31
閱讀 1564·2019-08-26 10:16