天天看點

1.十大排序算法

1.什麼是排序算法?

在梳理十大排序算法之前,雖然知道排序算法是将數字或字母按增序排列的算法,但該了解過于片面,那排序算法的權威定義是什麼呢。

一個排序算法(英語:Sorting algorithm)是一種能将一串資料依照特定排序方式排列的算法。最常用到的排序方式是數值順序以及字典順序。基本上,排序算法的輸出必須遵守下列兩個原則:
  1. 輸出結果為遞增序列(遞增是針對所需的排序順序而言)
  2. 輸出結果是原輸入的一種排列、或是重組

2. 如果評判一個算法?

1.時間複雜度

執行算法需要消耗的時間。一般來說,看算法實作中的

for循環

的個數,比如說冒泡排序的算法實作中有兩個

for

,那麼它的時間複雜度是

n^2

(n代表目标集合的大小)。但時間複雜度有三種細分情況,通常是最差、平均和最好性能。

2.空間複雜度

執行算法時所消耗的空間大小。在執行算法時,需要看有沒有引入額外的記憶體空間,比如說對一個集合進行排序,沒有引入額外的空間,那麼時間複雜度就是

O(n)

,如果建立一個大小和目标集合相同的集合,那麼空間複雜度就是

O(n^2)

3.穩定性

為啥算法還有穩定性,這種聽起來不太好了解。我了解是算法排序後,各元素的相對位置的唯一性有沒有變化,如果執行了多次該算法,各元素的相對位置都是固定且唯一的,那麼就說這個算法是穩定的,否則稱之為不穩定。

3.十大排序算法

1.算法之間的不同在于适用場景不同,各有千秋。
  1. 冒泡排序(bubble sort)
  2. 選擇排序(selection sort)
  3. 插入排序(insertion sort)
  4. 快速排序(quick sort)
  5. 歸并排序(merge sort)
  6. 希爾排序(shell sort)
  7. 堆排序(heap sort)
  8. 計數排序(counting sort)
  9. 桶排序(bucket sort)
  10. 基數排序(radix sort)
2.簡要比較
1.十大排序算法

4.算法動态可視化學習資料

  1. https://visualgo.net/zh
1.排序算法 wiki