冒泡排序:第1次選出最大的數字,第2次選出 第二大的數字,以此類推,直到全部按大小排列完畢
冒泡排序比較次數(復雜度):c=n/2[(n-1)+0]=0.5(n^2-n) #復雜度是O(n2)—“n的平方級”*
快速排序:第1次隨機挑選一個數,稱為樞值,接下來,將所有要排序的數字分成兩部分,第一部分是大于等于樞值的,第二部分是小于樞值的;從上面得到的2堆數字,分別采用第一步的方法各自再找一個樞值,也用同樣的方法各分成2組;再對這4堆數字分別采用第一步的方法各自再找一個樞值,也用同樣的方法各分成2組…四堆變八堆,八堆變十六堆,很快所有的數字就排好序了,
快速排序平均比較次數(復雜度):復雜度是O(n*log2[n])—以2為底,n的對數
快速排序最佳比較次數(復雜度):復雜度是O(n*log2[n])—以2為底,n的對數
快速排序最差比較次數(復雜度):復雜度是O(n2)—“n的平方級”(每次都恰好取到極值,退化為冒泡排序)
隨著資料量變大,兩種排序的運算次數(效率)的數量級差距會越來越大,同樣配置的計算機,采用不同的演算法,對一個超級大的陣列/元組/數列等就行排序,使用快速排序演算法的計算機1秒能完成的計算,若是使用冒泡排序可能需要運算到宇宙毀滅都算不完,
Python代碼分別實作
冒泡排序:
快速排序:
直接呼叫串列類的sort方法快速實作:
to be continued…
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/76907.html
標籤:AI
