中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

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

临猗县| 广宗县| 曲松县| 章丘市| 澄迈县| 时尚| 河池市| 文山县| 太康县| 峡江县| 涞水县| 石棉县| 林西县| 万源市| 福建省| 越西县| 家居| 宜宾县| 耿马| 洞头县| 宿迁市| 定南县| 江津市| 子洲县| 青铜峡市| 万州区| 泾源县| 崇文区| 永济市| 朝阳市| 梅河口市| 濉溪县| 海原县| 陆丰市| 含山县| 奉化市| 米脂县| 高邮市| 德令哈市| 洛宁县| 航空|