演算法無論如何總是必要的。
同樣的問題,使用不同的演算法結果可能天差地別。
給出在應用層需要演算法內容的應用的乙個例子,並且討論設計的演算法功能。在android studio中需要對strings.xml按照字母順序排序,使得檔案內容更加有秩序;
假設我們正比較插入排序和歸併排序在同樣機器上的實現,對於規模為n的輸入,插入排序執行\(8n^2\),歸併排序執行\(64\lg\),問對哪些n值,插入排序優於歸併排序?
fun main()
}}fun getfirst(index: int) = math.pow(index.todouble(), 8.todouble())
fun getsecond(index: int) = math.pow(2.todouble(), index.todouble())
題目可以被看做\(n^8 - 2^n > 0\)的整數解;
通過執行上述程式可以得知答案是
\(2\le n \le 43\),n為整數。
當n的最小值為何值時,執行時間為\(100n^2\)的乙個演算法在同樣的機器上快於執行時間為\(2^n\)的了乙個演算法?將上述程式稍作修改,便可得到正確答案:
\(n \ge 15\),n為整數。
執行時間的比較思路:
f(n) = 1000
f(n) = 1000 * 60
f(n) = 1000 * 60 * 60
f(n) = 1000 * 60 * 60 * 24
f(n) = 1000 * 60 * 60 * 24 * 30
f(n) = 1000 * 60 * 60 * 24 * 30 * 12
f(n) = 1000 * 60 * 60 * 24 * 30 * 12 * 100
演算法導論 第12章
這一章主要就講了個二叉查詢樹。有關它的所有操作。這個在前面的資料結構裡面已經具體實現過了,就不重複了,主要來說說這裡我的感受。1.關於輸出 這個就是個中序遍歷,找左子樹,列印自己,找右子樹,over。2.關於查詢 和遍歷類似,比較關鍵字k與root的大小,小於遞迴找左子樹。大於遞迴找右子樹。o了。不...
演算法導論 12 動態規劃 下
這一篇主要關於最優二叉查詢樹的分析與實現,以及演算法導論動態規劃一章的幾道思考題。最優二叉查詢樹,是經過優化的二叉查詢樹。在知曉每個鍵被查詢到的概率的情況下,生成一棵二叉查詢樹,使得查詢的期望深度最小。最優二叉查詢樹仍然保持二叉查詢樹的性質,所以查詢概率最大的鍵不一定是樹的跟。形式地,給定由 n 個...
演算法導論 第一章 1 2 演算法分析
演算法分析 概念 演算法分析即指對乙個演算法所需的資源進行 一般來說,資源是指計算時間,有時也指儲存器 通訊頻寬或邏輯門等。給定乙個問題後,通過分析幾種候選演算法,可以從中選出乙個最有效的演算法。插入排序演算法的分析 insertion sort過程的時間開銷與輸入有關 排序1000個數的時間比排序...