演算法功能
① 數據結構順序表問題 指出演算法的功能
圖一:
第1個for循環找出該順序表中最大值的下標,保存到j中。
第2個for循環把j後面的元素依次向前移動,並令順序表的長度減1。
該演算法功能:刪除該順序表中值最大的元素。
圖二:
第1個for循環找出該順序表中最後一個最小值的下標,保存到j中。
第2個for循環把j以及其後的元素依次向後移動,相當於把j的位置空出來,然後把第二個參數x插入到j的位置。並令順序表的長度加1。
該演算法功能:查找該順序表中最後一個值最小的元素下標,然後把新元素x插入到該下標處,該位置及其後的原有元素整體向後移動一個位置。
② 簡述以下演算法的功能。
第一個演算法是把無頭結點單鏈表的第一個節點變到最後一個,使第二個節點變為頭結點,原來的頭結點變為最後一個。
第二個演算法是把原來的單循環鏈表的一部分元素取出來,具體說就是從pa到pb前一個節點(包括pa而不包括pb)取出來,組成新的單循環鏈表。
③ 程序員學演算法到底有什麼用
演算法是編程的基礎,可以提升自己的邏輯能力,好的演算法可以使編程更簡單,減少冗餘,用最短的代碼實現功能,學好演算法是很有必要的
演算法是計算機的靈魂,是解決所有問題的根源,所以計算機與數學關系非常密切。
程序是演算法加編程語言。其中,編程語言是很多程序員都熟知的。但說到演算法部分程序員覺得跟自己關系不大。實際上,所有的程序都要用到演算法。下面舉幾個演算法的例子幫您理解一下演算法的作用。
HelloWorld里的演算法
學過編程的人,接觸到的第一個程序大概都是著名的「Helloworld」了。這么簡單的程序會有演算法嗎?當然有啦,請思考一下計算機是只認識數字的,怎麼讓它能識別文字呢?聰明的人類給每一個文字都制定了一個編碼,配合數據類型的定義,計算機就能識別文字了。這種編碼的方式就是一種演算法了。您在鍵盤上輸入文字本身就是一種演算法的實現。英文還好就一兩百個字母數字和符號。漢語博大精深有幾萬個字元,用101個按鍵組合來體現所有的文字這本身就是一種了不起的演算法。
經典的演算法-割圓術
割圓術跟程序的關系不大,但它卻凝聚了編程的思想。我們知道所謂程序運算是由四則運算加上邏輯運算組成的。割圓術正是反復使用用了這些基本運算,經多次循環不斷接近圓周率的。這個方法在演算法中叫遞推法。在只能用算籌的年代,就能想到這么時尚的方法,我不得不說老祖宗真的很聰明。從另一個角度上說,哪亮氏演算法其實是超越了編程的一種思想。
一個關於演算法的故事
這個故事有點悲傷。我們知道法律規定一個人去逝後,他的遺產要由直系親屬繼承。有這樣一個家庭夫婦二人和一個孩子。有一天丈夫帶著孩子二人坐飛機旅行,不幸的是飛機墜毀了二個人都遇難了。現在出現了一個遺產繼承的問題。
丈夫的父母都健在,如果丈夫先於孩子去世,那麼按照法律他的遺產要由父母妻子和孩子四人繼承,每人分得四分之一。之後孩子去世,妻子將繼承孩子的全部財產。結果是父母每人分得四分之一,而妻子一人獨得二分之一。
如果孩子先於丈夫去世,則結局就是父母和妻子每人得三分之一。
到底該怎麼分呢?沒人能知道,因為誰都沒有辦法搞清楚丈夫和孩子哪個先去世。這說明了前面那個關於繼承的法律有點問題。這個問題是一個關於時間的演算法問題。這種現象在互聯網的世界裡很普遍,很多人都在發信息,但互聯網不能保證先發的信息就能先到。因此,必須要設計出演算法來解決這種時間上的沖突。
我們可以把計算機程序想像成用數字去模擬現實世界,演算法則對應了現實世界中的各種規則。不李散懂得演算法,我們便無法確定寫出來的程序能否滿足需求。
很高興回答您提出的,程序員學好演算法到底有什麼用?
1、首先演算法學好的話,不論對你思考問題的方式還是對你編程的思維都會鍵拍有很大的好處。
2、編程演算法只是演算法的一種表達形式,還可以用表格或流程圖來表達演算法。
3、各種演算法在不同領域扮演不通角色,本質上沒有區別,一通百通。
4、一些基礎演算法的話,沒必要找資料書籍,也沒有太多要求,隨便在網上搜索一下,就能找到很多詳細的資料。
其實,一般初級甚至中級程序員在日常開發中是用不了演算法的,要麼接觸不到,要麼別人幫你封裝好了,你可以用現成的
但是時間一長,你就會發現不會演算法,就很難變得更加優秀,你會發現優秀框架的源碼,部分是需要用到演算法,你不懂,有些存儲原理,也用到演算法,用到這些演算法,你的代碼執行的效率更高,這個時候你就需要去了解這些東西,否則你就很難再上一層樓
千萬不要覺得演算法不重要,其實這個是一種寶貴財富,在日常的開發中,對你有潛移默化的影響,所以,想成為一個優秀的程序員,演算法數據結構是必不可少學的,一起加油學習演算法吧
④ 演算法功能
演算法不同,功能都是不相同的。
演算法(Algorithm)是指解題方案的准確而完整的描述,是一系列解決問題的清晰指令,演算法代表著用系統的方法描述解決問題的策略機制。也就是說,能夠對一定規范的輸入,在有限時間內獲得所要求的輸出。
如果一個演算法有缺陷,或不適合於某個問題,執行這個演算法將不會解決這個問題。不同的演算法可能用不同的時間、空間或效率來完成同樣的任務。一個演算法的優劣可以用空間復雜度與時間復雜度來衡量。
一個演算法應該具有以下七個重要的特徵和功能:
1、有窮性(Finiteness)
演算法的有窮性是指演算法必須能在執行有限個步驟之後終止
2、確切性(Definiteness)
演算法的每一步驟必須有確切的定義;
3、輸入項(Input)
一個演算法有0個或多個輸入,以刻畫運算對象的初始情況,所謂0個輸入是指演算法本身定出了初始條件;
4、輸出項(Output)
一個演算法有一個或多個輸出,以反映對輸入數據加工後的結果。沒有輸出的演算法是毫無意義的;
5、可行性(Effectiveness)
演算法中執行的任何計算步驟都是可以被分解為基本的可執行的操作步,即每個計算步都可以在有限時間內完成(也稱之為有效性);
6、
高效性(High
efficiency)
執行速度快,佔用資源少;
7、
健壯性(Robustness)
對數據響應正確。
⑤ 什麼是演算法,它的五大特性是什麼,演算法和程序的關系是什麼
演算法(Algorithm)是指解題方案的准確而完整的描述,是一系列解決問題的清晰指令,演算法代表著用系統的方法描述解決問題的策略機制。
一個演算法應該具有以下五個重要的特徵:
有窮性(Finiteness)
演算法的有窮性是指演算法必須能在執行有限個步驟之後終止;
確切性(Definiteness)
演算法的每一步驟必須有確切的定義;
輸入項(Input)
一個演算法有0個或多個輸入,以刻畫運算對象的初始情況,所謂0個輸入是指演算法本身定出了初始條件;
輸出項(Output)
一個演算法有一個或多個輸出,以反映對輸入數據加工後的結果。沒有輸出的演算法是毫無意義的;
可行性(Effectiveness)
演算法中執行的任何計算步驟都是可以被分解為基本的可執行的操作步,即每個計算步都可以在有限時間內完成(也稱之為有效性)。
演算法和程序的關系是:
演算法就是程序的靈魂,一個需要實現特定功能的程序,實現它的演算法可以有很多種,所以演算法的優劣決定著程序的好壞。
程序就是遵循一定規則的、為完成指定工作而編寫的代碼。有一個經典的等式闡明了什麼叫程序:程序 = 演算法 + 數據結構 + 程序設計方法 + 語言工具和環境 。
⑥ 演算法的基本概念和特徵
演算法是指解題方案的准確而完整的描述,是一系列解決問題的清晰指令,演算法代表著用系統的方法描述解決問題的策略機制。也就是說,能夠對一定規范的輸入,在有限時間內獲得所要求的輸出。如果一個演算法有缺陷,或不適合於某個問題,執行這個演算法將不會解決這個問題。不同的演算法可能用不同的時間、空間或效率來完成同樣的任務。一個演算法的優劣可以用空間復雜度與時間復雜度來衡量。
演算法中的指令描述的是一個計算,當其運行時能從一個初始狀態和(可能為空的)初始輸入開始,經過一系列有限而清晰定義的狀態,最終產生輸出並停止於一個終態。一個狀態到另一個狀態的轉移不一定是確定的。隨機化演算法在內的一些演算法,包含了一些隨機輸入。
一、數據對象的運算和操作:計算機可以執行的基本操作是以指令的形式描述的。一個計算機系統能執行的所有指令的集合,成為該計算機系統的指令系統。一個計算機的基本運算和操作有如下四類:
1.算術運算:加減乘除等運算。
2.邏輯運算:或、且、非等運算。
3.關系運算:大於、小於、等於、不等於等運算。
4.數據傳輸:輸入、輸出、賦值等運算。
二、演算法的控制結構:一個演算法的功能結構不僅取決於所選用的操作,而且還與各操作之間的執行順序有關。