91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java中排序算法有哪些

發布時間:2021-11-17 09:27:33 來源:億速云 閱讀:118 作者:小新 欄目:大數據

小編給大家分享一下Java中排序算法有哪些,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

冒泡排序(Bubble Sort)

  • 比較相鄰的元素。如果第一個比第二個大,就交換它們兩個,直到最后

  • 算法分析

    • 這里注意,如果發現沒有交換,證明已經是排好序了

    • 第一次比較就沒有出現交換,所以是 O(n)   

    • 最佳情況:T(n) = O(n)   

    • 最差情況:T(n) = O(n2)   

    • 平均情況:T(n) = O(n2)

選擇排序(Selection Sort)

  • 第一個分別與后面的進行比較,每次把最大(最小)的投出來

  • 算法分析

    • 最佳情況:T(n) = O(n2) 

    • 最差情況:T(n) = O(n2)  

    • 平均情況:T(n) = O(n2)

插入排序(Insertion Sort)

  • 每次拿出一個與前面挨著的比較,發現第一個比自己大(小)的插入,前面的序列都是有序序列

  •  算法分析

    • 每次比較多少次不確定,近似n次

    • 每次都不需要動(每次比較一次),遍歷一次

    • 最佳情況:T(n) = O(n)   

    • 最壞情況:T(n) = O(n2)   

    • 平均情況:T(n) = O(n2)

希爾排序(Shell Sort)

  • 改進插入排序

  • “縮小增量排序”或者“遞減增量排序”

  •  算法分析

    • 基于插入排序的兩點性質而來:

    • 對一個“幾乎”已經排好序的無序序列,插入排序的效率是很高的,可以達到線性排序的效率

    • 最佳情況:T(n) = O(nlog2 n)  

    • 最壞情況:T(n) = O(nlog2 n)  

    • 平均情況:T(n) =O(nlog2n) 

    • 時間復雜度:

歸并排序(Merge Sort)

  • 把長度為n的輸入序列分成兩個長度為n/2的子序列;

  • 對這兩個子序列分別采用歸并排序;

  • 將兩個排序好的子序列合并成一個最終的排序序列。

  • 算法分析

    • 最后一輪訪問是n

    • 往前推每次都是n/2

    • 取極限

    • 最佳情況:T(n) = O(n)  

    • 最差情況:T(n) = O(nlogn)  

    • 平均情況:T(n) = O(nlogn)

快速排序(Quick Sort)

  • 選擇中間數,把大雨的丟右邊,小于的丟左邊

    • 遞歸

  • 算法分析

    • 最佳情況:T(n) = O(nlogn)   

    • 最差情況:T(n) = O(n2)   

    • 平均情況:T(n) = O(nlogn) 

堆排序(Heap Sort)

  • 算法分析

    • 最佳情況:T(n) = O(nlogn)

    • 最差情況:T(n) = O(nlogn)

    • 平均情況:T(n) = O(nlogn)

計數排序(Counting Sort)

  • 有確定范圍的數

  • 申請最大數長度的數組

  • 算法分析

    • 計數排序不是比較排序,排序的速度快于任何比較排序算法。

    • 由于用來計數的數組C的長度取決于待排序數組中數據的范圍

    • 這使得計數排序對于數據范圍很大的數組,需要大量時間和內存。

    • 等于待排序數組的最大值與最小值的差加上1

    • 當輸入的元素是n 個0到k之間的整數時,它的運行時間是 O(n + k)。

    • 最佳情況:T(n) = O(n+k)  

    • 最差情況:T(n) = O(n+k)  

    • 平均情況:T(n) = O(n+k)

桶排序(Bucket Sort)

  • 桶排序是計數排序的升級版。

  • 桶排序最好情況下使用線性時間O(n),

    • 因為其它部分的時間復雜度都為O(n)。

    • 桶排序的時間復雜度,取決與對各個桶之間數據進行排序的時間復雜度,

    • 很顯然,桶劃分的越小,各個桶之間的數據越少,排序所用的時間也會越少。

    • 但相應的空間消耗就會增大。

  • 最佳情況:T(n) = O(n+k) 

  • 平均情況:T(n) = O(n+k)   

  • 最差情況:T(n) = O(n2) 

基數排序(Radix Sort)

  • 基數排序也是非比較的排序算法,對每一位進行排序,從最低位開始排序,復雜度為O(kn),為數組長度,k為數組中的數的最大的位數;

  • 算法分析

    • 最佳情況:T(n) = O(n * k)   

    • 最差情況:T(n) = O(n * k)   

    • 平均情況:T(n) = O(n * k)

以上是“Java中排序算法有哪些”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

枞阳县| 齐齐哈尔市| 彭泽县| 马鞍山市| 萝北县| 玉田县| 济宁市| 锡林郭勒盟| 临武县| 青海省| 云南省| 历史| 阳江市| 汝州市| 富裕县| 安仁县| 吴旗县| 运城市| 新巴尔虎左旗| 长顺县| 长白| 昌吉市| 玛多县| 阿合奇县| 和林格尔县| 沾益县| 开远市| 泸州市| 乐至县| 汝城县| 阿荣旗| 玛曲县| 龙海市| 张家口市| 祁连县| 旺苍县| 丰县| 渭源县| 光山县| 绿春县| 阿巴嘎旗|