本演算法
『壹』 演算法是什麼急!!!!
演算法 Algorithm
演算法是在有限步驟內求解某一問題所使用的一組定義明確的規則。通俗點說,就是計算機解題的過程。在這個過程中,無論是形成解題思路還是編寫程序,都是在實施某種演算法。前者是推理實現的演算法,後者是操作實現的演算法。
一個演算法應該具有以下五個重要的特徵:
1、有窮性: 一個演算法必須保證執行有限步之後結束;
2、確切性: 演算法的每一步驟必須有確切的定義;
3、輸入:一個演算法有0個或多個輸入,以刻畫運算對象的初始情況,所謂0個輸入是指演算法本身定除了初始條件;
4、輸出:一個演算法有一個或多個輸出,以反映對輸入數據加工後的結果。沒有輸出的演算法是毫無意義的;
5、可行性: 演算法原則上能夠精確地運行,而且人們用筆和紙做有限次運算後即可完成。
演算法的設計要求
1)正確性(Correctness)
有4個層次:
A.程序不含語法錯誤;
B.程序對幾組輸入數據能夠得出滿足規格要求的結果;
C.程序對精心選擇的、典型的、苛刻的、帶有刁難性的幾組輸入數據能夠得出滿足規格要求的結果;
D.程序對一切合法的輸入數據都能產生滿足規格要求的結果。
2)可讀性(Readability)
演算法的第一目的是為了閱讀和交流;
可讀性有助於對演算法的理解;
可讀性有助於對演算法的調試和修改。
3)高效率與低存儲量
處理速度快;存儲容量小
時間和空間是矛盾的、實際問題的求解往往是求得時間和空間的統一、折中。
演算法的描述 演算法的描述方式(常用的)
演算法描述 自然語言
流程圖 特定的表示演算法的圖形符號
偽語言 包括程序設計語言的三大基本結構及自然語言的一種語言
類語言 類似高級語言的語言,例如,類PASCAL、類C語言。
演算法的評價 演算法評價的標准:時間復雜度和空間復雜度。
1)時間復雜度 指在計算機上運行該演算法所花費的時間。用「O(數量級)」來表示,稱為「階」。
常見的時間復雜度有: O(1)常數階;O(logn)對數階;O(n)線性階;O(n^2)平方階
2)空間復雜度 指演算法在計算機上運行所佔用的存儲空間。度量同時間復雜度。
時間復雜度舉例
(a) X:=X+1 ; O(1)
(b) FOR I:=1 TO n DO
X:= X+1; O(n)
(c) FOR I:= 1 TO n DO
FOR J:= 1 TO n DO
X:= X+1; O(n^2)
「演算法」一詞最早來自公元 9世紀 波斯數學家比阿勒·霍瓦里松的一本影響深遠的著作《代數對話錄》。20世紀的 英國 數學家 圖靈 提出了著名的圖靈論點,並抽象出了一台機器,這台機器被我們稱之為 圖靈機 。圖靈的思想對演算法的發展起到了重要的作用。
演算法是 計算機 處理信息的本質,因為 計算機程序 本質上是一個演算法,告訴計算機確切的步驟來執行一個指定的任務,如計算職工的薪水或列印學生的成績單。 一般地,當演算法在處理信息時,數據會從輸入設備讀取,寫入輸出設備,可能保存起來以供以後使用。
這是演算法的一個簡單的例子。
我們有一串隨機數列。我們的目的是找到這個數列中最大的數。如果將數列中的每一個數字看成是一顆豆子的大小 可以將下面的演算法形象地稱為「撿豆子」:
首先將第一顆豆子(數列中的第一個數字)放入口袋中。
從第二顆豆子開始檢查,直到最後一顆豆子。如果正在檢查的豆子比口袋中的還大,則將它撿起放入口袋中,同時丟掉原先的豆子。 最後口袋中的豆子就是所有的豆子中最大的一顆。
下面是一個形式演算法,用近似於 編程語言 的 偽代碼 表示
給定:一個數列「list",以及數列的長度"length(list)" largest = list[1] for counter = 2 to length(list): if list[counter] > largest: largest = list[counter] print largest
符號說明:
= 用於表示賦值。即:右邊的值被賦予給左邊的變數。
List[counter] 用於表示數列中的第 counter 項。例如:如果 counter 的值是5,那麼 List[counter] 表示數列中的第5項。
<= 用於表示「小於或等於」。
演算法的分類
(一)基本演算法 :
1.枚舉
2.搜索:
深度優先搜索
廣度優先搜索
啟發式搜索
遺傳演算法
(二)數據結構的演算法
(三)數論與代數演算法
(四)計算幾何的演算法:求凸包
(五)圖論 演算法:
1.哈夫曼編碼
2.樹的遍歷
3.最短路徑 演算法
4.最小生成樹 演算法
5.最小樹形圖
6.網路流 演算法
7.匹配演算法
(六)動態規劃
(七)其他:
1.數值分析
2.加密演算法
3.排序 演算法
4.檢索演算法
5.隨機化演算法
『貳』 基本演算法語句
優蕙巻和返勵不領取,也是被商家白白拿走的!
『叄』 C語言基本演算法
「設原來a=12「就表示了把a定義為整型變數,這要看是什麼環境下了。
此題的背景是考察整型變數的性質,
你具體應用時要自己定義變數,而且必須定義,當然要根據實際需要了。
使用變數前要先定義。
你再看看這個題的下一個小題,只有整型變數才可以進行求余運算!可以用此方法反推回去。a是整型的(小技巧)
本人郵箱[email protected]
還暈就發郵件。
『肆』 基本演算法編程軟體
VB就能實現
'按鈕Command1
sub command1_click()'點擊觸發
x=inputbox("輸入x")
y=x^3+3
msgbox y
end
end sub
『伍』 求等額本金和等額本息演算法
等額本金貸款計算公式:
每月還款金額= (貸款本金/ 還款月數)+(本金 — 已歸還本金累計額)×每月利率
等額本息的計算方式:
(5)本演算法擴展閱讀:
貸款的還款方式:
(1)等額本息還款:即貸款的本金和利息之和採用按月等額還款的一種方式。住房公積金貸款和多數銀行的商業性個人住房貸款都採用了這種方式。這種方式每月的還款額相同;
(2)等額本金還款:即借款人將貸款額平均分攤到整個還款期內每期(月)歸還,同時付清上一交易日到本次還款日間的貸款利息的一種還款方式。這種方式每月的還款額逐月減少;
(3)按月付息到期還本:即借款人在貸款到期日一次性歸還貸款本金〔期限一年以下(含一年)貸款適用〕,貸款按日計息,利息按月歸還;
(4)提前償還部分貸款:即借款人向銀行提出申請,可以提前償還部分貸款金額,一般金額為1萬或1萬的整數倍,償還後此時貸款銀行會出具新的還款計劃書,其中還款金額與還款年限是發生變化的,但還款方式是不變的,且新的還款年限不得超過原貸款年限。
(5)提前償還全部貸款:即借款人向銀行提出申請,可以提前償還全部貸款金額,償還後此時貸款銀行會終止借款人的貸款,並辦理相應的解除手續。
(6)隨借隨還:借款後利息是按天計算的,用一天算一天息。隨時都可以一次性結清款項無須違約金。
『陸』 acm中基本演算法有哪些
回溯演算法,貪心法,蠻力法,動態規劃,分支限界,圖演算法
『柒』 求一本演算法圖解 pdf的電子版
演算法圖解pdf
『捌』 推薦一本演算法書籍,淺顯易懂又不失深度,如涉及動態規劃等一些高級演算法,最好語言是 java ,c 語
劉汝佳 演算法競賽入門經典
『玖』 我是大三的學計算機的學生,請推薦給我幾本演算法方面的書
演算法導論
c程序的介面和實現(一個老外寫的 雖然講語言 卻講了很多演算法和解決方案)
演算法,分析和實現:徐子珊
『拾』 演算法有幾種
但是可以分類。 以下是我查到的資料 演算法可大致分為基本演算法、數據結構的演算法、數論與代數演算法、計算幾何的演算法、圖論的演算法、動態規劃以及數值分析、加密演算法、排序演算法、檢索演算法、隨機化演算法、並行演算法。 演算法可以宏泛的分為三類: 有限的,確定性演算法 這類演算法在有限的一段時間內終止。他們可能要花很長時間來執行指定的任務,但仍將在一定的時間內終止。這類演算法得出的結果常取決於輸入值。 有限的,非確定演算法 這類演算法在有限的時間內終止。然而,對於一個(或一些)給定的數值,演算法的結果並不是唯一的或確定的。 無限的演算法 是那些由於沒有定義終止定義條件,或定義的條件無法由輸入的數據滿足而不終止運行的演算法。通常,無限演算法的產生是由於未能確定的定義終止條件。 演算法設計與分析的基本方法 1.遞推法 2.遞歸遞歸指的是一個過程:函數不斷引用自身,直到引用的對象已知 3.窮舉搜索法 窮舉搜索法是對可能是解的眾多候選解按某種順序進行逐一枚舉和檢驗,並從眾找出那些符合要求的候選解作為問題的解。 4.貪婪法貪婪法是一種不追求最優解,只希望得到較為滿意解的方法。貪婪法一般可以快速得到滿意的解,因為它省去了為找最優解要窮盡所有可能而必須耗費的大量時間。貪婪法常以當前情況為基礎作最優選擇,而不考慮各種可能的整體情況,所以貪婪法不要回溯。 5.分治法把一個復雜的問題分成兩個或更多的相同或相似的子問題,再把子問題分成更小的子問題……直到最後子問題可以簡單的直接求解,原問題的解即子問題的解的合並。 6.動態規劃法 動態規劃是一種在數學和計算機科學中使用的,用於求解包含重疊子問題的最優化問題的方法。其基本思想是,將原問題分解為相似的子問題,在求解的過程中通過子問題的解求出原問題的解。動態規劃的思想是多種演算法的基礎,被廣泛應用於計算機科學和工程領域。 7.迭代法迭代是數值分析中通過從一個初始估計出發尋找一系列近似解來解決問題(一般是解方程或者方程組)的過程,為實現這一過程所使用的方法統稱為迭代法。