Java中常用的七大排序算法

Java作爲時下最流行的編程語言,自流行開始就沒有衰落過,作爲一門永遠不過時的語言是可怕的,總結了一些關於Java常用的排序算法,希望對大家的Java學習有所幫助。

1.插入排序算法

插入排序的基本思想是在遍歷數組的過程中,假設在序號 i 之前的元素即 [0..i-1] 都已經排好序,本趟需要找到 i 對應的元素 x 的正確位置 k ,並且在尋找這個位置 k 的過程中逐個將比較過的元素往後移一位,爲元素 x “騰位置”,最後將 k 對應的元素值賦爲 x ,一般情況下,插入排序的時間複雜度和空間複雜度分別爲 O(n2 ) 和 O(1)。

2.選擇排序算法

選擇排序的基本思想是遍歷數組的過程中,以 i 代表當前需要排序的序號,則需要在剩餘的 [i…n-1] 中找出其中的最小值,然後將找到的最小值與 i 指向的值進行交換。因爲每一趟確定元素的過程中都會有一個選擇最大值的子流程,所以人們形象地稱之爲選擇排序。選擇排序的時間複雜度和空間複雜度分別爲 O(n2 ) 和 O(1) 。

小編是一個有着5年工作經驗的java程序員,對於java,自己有做資料的整合,一個完整學習java的路線,學習資料和工具,相信這裏有很多學習java的小夥伴,我創立了一個2000人學習扣羣,479121291。每晚都有java的直播課程。無論是初級還是進階的小夥伴小編我都歡迎!

3.冒泡排序算法

冒泡排序是將比較大的數字沉在最下面,較小的浮在上面

4.快速排序算法

通過一趟排序將待排記錄分割成獨立的兩部分,其中一部分記錄的關鍵字均比另一部分的關鍵字小,則可以分別對這兩部分記錄繼續進行排序,已達到整個序列有序的目的,本質就是,找一個基位(樞軸,分水嶺,作用是左邊的都比它小,右邊的都比它大。

5.合併排序算法

歸併排序採用的是遞歸來實現,屬於“分而治之”,將目標數組從中間一分爲二,之後分別對這兩個數組進行排序,排序完畢之後再將排好序的兩個數組“歸併”到一起,歸併排序最重要的也就是這個“歸併”的過程,歸併的過程中需要額外的跟需要歸併的兩個數組長度一致的空間。

6.希爾排序算法

希爾排序的誕生是由於插入排序在處理大規模數組的時候會遇到需要移動太多元素的問題。希爾排序的思想是將一個大的數組“分而治之”,劃分爲若干個小的數組。

7.堆排序算法

本質就是先構造一個大頂堆,parent比children大,root節點就是最大的節點 把最大的節點(root)與尾節點(最後一個節點,比較小)位置互換,剩下最後的尾節點,現在最大,其餘的,從第一個元素開始到尾節點前一位,構造大頂堆遞歸。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章