(二)演算法 排序演算法總概

2021-08-10 17:50:48 字數 1251 閱讀 5474

有兩種思想,就像是擺放在天鵝絨上的寶石那樣褶褶生輝,乙個是微積分,另乙個就是演算法。微積分以及在微積分基礎上建立起來的數學分析體系造就了現代科學,而演算法則造就了現在世界。--大衛 柏林斯基

1、什麼是演算法?

algorithm(演算法)是一系列解決問題的明確指令,也就是說,對於符合一定規範的輸入,能夠在有限的時間內獲得要求的輸出。

演算法是不依賴於計算機存在的,之前的computer是一些從事數學計算的人。當有了計算機以及其他的電子裝置的時候,絕大多數演算法就可以依靠計算機來執行,但是演算法本身並不依賴這樣的假設。

2、為什麼要用演算法?

是因為生活中的一些問題需要解決,而解決問題的方式可能有很多種,把解決問題的過程抽象出來,有乙個程式化解決方案。演算法設計和分析過程的一般思路,如下圖。

3 排序問題?

上述簡單的理解了演算法,和演算法設計和分析的思路。那生活中的排序問題有很多種,例如員工按照工位號大小排序,按照姓氏進行排序,按照戶口所在地進行排序等一些列問題。我們都可以把一些排序問題,最終抽象為數的「代表」來進行排序,這樣利用計算機執行演算法,提高效率。

4 排序問題解決方案

站在巨人肩膀上,先人們想出了幾種解決問題的辦法,現排序問題有幾種解決方案。

選擇排序、氣泡排序、合併排序(歸併排序)、快速排序 、直接插入排序、希爾排序、堆排序、基數排序。

為了理解,和知識歸納,我們把演算法解決的策略大致可以分為幾種。

蠻力法

簡單選擇排序、氣泡排序

減治法                  直接插入排序、希爾排序

分治法                  合併排序(歸併排序)、快速排序

變治法                  堆排序

非比較排序

基數排序(空間換時間)

各個演算法的時間和空間複雜度,以及平均複雜度和最好最壞複雜度,如下圖。

演算法 排序演算法(二)

選擇排序,選擇所有元素中最小的乙個放在第一位,然後從剩下的元素中選擇最小的放第二位,依此類推,完成選擇排序。include define m 10001 using namespace std int a m void selectsort int n int t a i a i a min a m...

秋招準備 演算法 排序(總)

1.ques 簡單介紹選擇排序 選擇排序通過在每一輪迴圈中選擇出極值,然後將之與未排序好區域的某個端點作交換,完成一次排序。比如,第一輪選出最小值,此時的未排序區是0 n 1,則將這個最小值與0號陣列元素作交換,完成排序,以此類推,外迴圈n次之後完成排序。中間變數 儲存每次排序最小值的temp,最小...

排序演算法 二

不穩定的排序演算法 簡單選擇排序 每一趟從待排序的資料元素中選出最小 或最大 的乙個元素,順序放在已排好序的數列最前,直到全部待排序的資料元素排完。void selectsort int data int size size if i k swap data i data k 快排 非隨機 快速排序...