1、排序方法與複雜度歸類
(1)幾種最經典、最經常使用的排序方法:冒泡排序、插入排序、選擇排序、快速排序、歸併排序、計數排序、基數排序、桶排序。
(2)複雜度歸類
冒泡排序、插入排序、選擇排序 O(n^2)
快速排序、歸併排序 O(nlogn)
計數排序、基數排序、桶排序 O(n)算法
2、如何分析一個「排序算法」?
<1>算法的執行效率數組
<2>排序算法的穩定性code
<3>排序算法的內存損耗
原地排序算法:特指空間複雜度是O(1)的排序算法。對象
3、冒泡排序排序
冒泡排序只會操做相鄰的兩個數據。每次冒泡操做都會對相鄰的兩個元素進行比較,看是否知足大小關係要求,若是不知足就讓它倆互換。
穩定性:冒泡排序是穩定的排序算法。
空間複雜度:冒泡排序是原地排序算法。
時間複雜度:內存
4、插入排序開發
插入排序將數組數據分紅已排序區間和未排序區間。初始已排序區間只有一個元素,即數組第一個元素。在未排序區間取出一個元素插入到已排序區間的合適位置,直到未排序區間爲空。
空間複雜度:插入排序是原地排序算法。
時間複雜度:電商
穩定性:插入排序是穩定的排序算法。效率
5、選擇排序軟件
選擇排序將數組分紅已排序區間和未排序區間。初始已排序區間爲空。每次從未排序區間中選出最小的元素插入已排序區間的末尾,直到未排序區間爲空。
空間複雜度:選擇排序是原地排序算法。
時間複雜度:(都是O(n^2))
穩定性:選擇排序不是穩定的排序算法。
思考
選擇排序和插入排序的時間複雜度相同,都是O(n^2),在實際的軟件開發中,爲何咱們更傾向於使用插入排序而不是冒泡排序算法呢? 答:從代碼實現上來看,冒泡排序的數據交換要比插入排序的數據移動要複雜,冒泡排序須要3個賦值操做,而插入排序只須要1個,因此在對相同數組進行排序時,冒泡排序的運行時間理論上要長於插入排序。