軟考 演算法及常用排序演算法總結

2022-03-07 07:47:19 字數 1550 閱讀 6270

概念

演算法可以理解為由基本運算及規定的運算順序所構成的完整的解題步驟。或者看成按照要求設計好的有限的確切的計算序列,並且這樣的步驟和序列可以解決一類問題。 特徵

乙個演算法應該具有以下五個重要的特徵:

1、有窮性(finiteness)

演算法的有窮性是指演算法必須能在執行有限個步驟之後終止;

2、確定性(definiteness)

演算法的每一步驟必須有確切的定義;

3、輸入項(input)

乙個演算法有0個或多個輸入,以刻畫運算物件的初始情況,所謂0個輸入是指演算法本身定出了初始條件;

4、輸出項(output)

乙個演算法有乙個或多個輸出,以反映對輸入資料加工後的結果。沒有輸出的演算法是毫無意義的;

5、可行性(effectiveness)

演算法中執行的任何計算步驟都是可以被分解為基本的可執行的操作步,即每個計算步都可以在有限時間內完成      (也稱之為有效性)。

演算法效能比較

1.時間複雜度

演算法的時間複雜度是指執行演算法所需要的計算工作量。一般來說,計算機演算法是問題規模n的函式f(n),演算法的           時間複雜度也因此記做:  t(n)=ο(f(n))

因此,問題的規模n越大,演算法執行的時間的增長率與f(n) 的增長率正相關,稱作漸進時間複雜度。

2.空間複雜度

演算法的空間複雜度是指演算法需要消耗的記憶體空間。其計算和表示方法與時間複雜度類似,一般都用複雜度的漸近性來表示。同時間複雜度相比,空間複雜度的分析要簡單得多。

排序演算法

直接插入排序

每次從無序表中取出第乙個元素,把它插入到有序表的合適位置,使有序表仍然有序。對於具有n個記錄的          檔案,要進行n-1趟排序。

例:對15 45 46 58 18 10 62有小到大排序

第一次排序

取第二個數45,與第乙個數比較15<45,所以45插到15之後

15 45 46 58 18 10 62

第二次排序

取第三個數46 ,分別與已排好的第

一、第二個數比較,15<46,45<46,所以58插到46之後。

序列:15 45 46 58 18 10 62

第三次排序

取第四個數58,分別於排好的第

一、第二、第三個數比較,15<58,45<58,46<58,所以58插到46之後。

序列:15 45 46 58 18 10 62

第四次排序

取第五個數18,分別與排好的第

一、第二、第

三、第四個數比較,15<18,45>18,46>18,58>18,所以18插到15之後。

序列:15 18 45 46 58 10 62。

以此類推第

五、六…..次排序。

結果序列

10 15 18  45 46 58 62

演算法效能

時間複雜度:o(n^2)

空間複雜度:o(1)

希爾排序

希爾排序又稱縮小增量排序,是插入排序的一種。希爾排序屬於插入類排序,是將整個無序列分割成若干小的子串行分別進行插入排序。排序過程:先取乙個正整數d1

軟考 演算法 選擇

選擇排序的本質是先假設第乙個數是最大 小的 記錄下第乙個數的位置,讓第乙個數去跟後面的數比較,如果有比他更大 小的,就用這個更大 小的數去繼續比較,依照這個規則在這一趟中找到最大 小的,和第乙個數交換位置。後面的數也是這樣交換。選擇是固定位置找元素,而插入是固定元素找位置 以下我都以找最小數為例 選...

常用 常考演算法總結

模擬 搜尋廣度優先搜尋 bfs 優化 雙向bfs 深度優先搜尋 dfs 優化 折半dfs 迭代加深搜尋 ids 啟發式搜尋 astar 優化 idastar 優化 剪枝 位運算 排序氣泡排序 選擇排序 基數排序 桶排序 計數排序 插入排序 希爾排序 快速排序 歸併排序 求逆序對數 堆排序貪心 分治二...

面試常考 排序演算法總結

排序在各次面試的過程中問道的次數不少,氣泡排序和快速排序尤多。因此做一些總結,尤其是 部分。1.氣泡排序 1 思想 在一組數中,對當前未排好序的數,自上而下地對相鄰的兩個數依次進行比較和調整,讓較大的數往下沉,較小的數往上冒。2 複雜度 平均情況 o n 2 最壞情況 o n 2 逆序有序 最好情況...