1.旋轉陣列的最小數字(改造二分法)
把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個遞增排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如陣列為的乙個旋轉,該陣列的最小值為1.
public
class 旋轉陣列的最小數字
; system.out.
println
("旋轉陣列中的最小數字是"+f
(a));}
private
static
intf
(int
a)while
(begin+
1//截止條件是兩個數挨在一塊
else
//後半段是順序
}return a[end]
;//最後begin和end的兩個數挨一塊了,就取索引為end的數就是最小數字
}}
2.高效求a的n次冪的演算法
求a的n次冪,可以用迴圈,不斷累乘,時間複雜度為o(n),因為需要乘n次
高效求法:其實就是提高時間複雜度,從o(n)------->o(log n)
比如:求2^15,求解過程為2 ^1----->2 ^2--------->2 ^4------>2 ^8,不斷在原有的基礎上翻倍,這樣就只需要進行log n下,時間複雜度為o(log n)
public
class 高效求a的n次冪
private
static
intf
(int a,
int n)
//剩下的次冪n-ex
return y*
f(a,n-ex)
;//已經計算的數*還需要計算的低次冪
}}
演算法很美03演算法思想(分治)
分治法 divide and conquer,d c 將原問題劃分成若干個規模較小而結構與原問題一致的子問題 遞迴地解決這些子問題,然後再合併其結果,就得到原問題的解。容易確定執行時間,是分治演算法的優點之一。分治模式在每 層遞迴上都有三個步驟 分解 divide 將原問題分解成一系 列子問題 解決...
演算法很美之位運算
時間限制 2000ms 單點時限 1000ms 記憶體限制 256mb 描述乙個整型陣列裡除了兩個數字 互不相同 之外,其他的數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。要求時間複雜度是o n 空間複雜度是o 1 輸入第一行 陣列的長度n 1只出現了1次的那兩個數,小的在前大的在後,空格隔...
演算法很美之字串
描述 fjxmlhx每天都在被沼躍魚刷屏,因此他急切的找到了你希望你寫乙個程式遮蔽所有句子中的沼躍魚 marshtomp 不區分大小寫 為了使句子不缺少成分,統一換成 fjxmlhx 輸入輸入包括多行。每行是乙個字串,長度不超過200。一行的末尾與下一行的開頭沒有關係。輸出輸出包含多行,為輸入按照描...