(1)對於評述算法優劣術語的說明算法
穩定:若是a本來在b前面,而a=b,排序以後a仍然在b的前面;
不穩定:若是a本來在b的前面,而a=b,排序以後a可能會出如今b的後面;數組
內排序:全部排序操做都在內存中完成;
外排序:因爲數據太大,所以把數據放在磁盤中,而排序經過磁盤和內存的數據傳輸才能進行;數據結構
時間複雜度: 一個算法執行所耗費的時間。
空間複雜度: 運行完一個程序所需內存的大小。spa
(2)排序算法圖片總結:設計
1.冒泡排序:3d
解析:1.比較相鄰的兩個元素,若是前一個比後一個大,則交換位置。blog
2.第一輪的時候最後一個元素應該是最大的一個。排序
3.按照步驟一的方法進行相鄰兩個元素的比較,這個時候因爲最後一個元素已是最大的了,因此最後一個元素不用比較。遞歸
2.快速排序:索引
解析:快速排序是對冒泡排序的一種改進,第一趟排序時將數據分紅兩部分,一部分比另外一部分的全部數據都要小。而後遞歸調用,在兩邊都實行快速排序。
3.插入排序:
解析:
(1) 從第一個元素開始,該元素能夠認爲已經被排序
(2) 取出下一個元素,在已經排序的元素序列中從後向前掃描
(3) 若是該元素(已排序)大於新元素,將該元素移到下一位置
(4) 重複步驟3,直到找到已排序的元素小於或者等於新元素的位置
(5)將新元素插入到下一位置中
(6) 重複步驟2
2.二分查找:
解析:二分查找,也爲折半查找。首先要找到一箇中間值,經過與中間值比較,大的放又,小的放在左邊。再在兩邊中尋找中間值,持續以上操做,直到找到所在位置爲止。
(1)遞歸方法
(2)非遞歸方法
4.選擇排序:
解析:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,而後,再從剩餘未排序元素中繼續尋找最小(大)元素,而後放到已排序序列的末尾。
以此類推,直到全部元素均排序完畢。
5.希爾排序:
解析:先將整個待排序的記錄序列分割成爲若干子序列分別進行直接插入排序
6.歸併排序:
解析:歸併排序是一種穩定的排序方法。將已有序的子序列合併,獲得徹底有序的序列;即先使每一個子序列有序,再使子序列段間有序。
7.堆排序:
解析:堆排序(Heapsort)是指利用堆這種數據結構所設計的一種排序算法。堆積是一個近似徹底二叉樹的結構,並同時知足堆積的性質:即子結點的鍵值或索引老是
小於(或者大於)它的父節點。
8.計數排序:
解析:計數排序使用一個額外的數組C,其中第i個元素是待排序數組A中值等於i的元素的個數。而後根據數組C來將A中的元素排到正確的位置。它只能對整數進行排序。
9.桶排序:
解析:假設輸入數據服從均勻分佈,將數據分到有限數量的桶裏,每一個桶再分別排序(有可能再使用別的排序算法或是以遞歸方式繼續使用桶排序進行排
10.基數排序:
解析:基數排序是按照低位先排序,而後收集;再按照高位排序,而後再收集;依次類推,直到最高位。有時候有些屬性是有優先級順序的,先按低優先級排序,再按高優
先級排序。最後的次序就是高優先級高的在前,高優先級相同的低優先級高的在前。基數排序基於分別排序,分別收集,因此是穩定的。
基數排序 vs 計數排序 vs 桶排序
這三種排序算法都利用了桶的概念,但對桶的使用方法上有明顯差別:
基數排序:根據鍵值的每位數字來分配桶 計數排序:每一個桶只存儲單一鍵值 桶排序:每一個桶存儲必定範圍的數值