Java中常用的七大排序算法

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

1.插入排序算法

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

2.選擇排序算法

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

小編是一個有著5年工作經(jīng)驗的java程序員,對于java,自己有做資料的整合,一個完整學習java的路線,學習資料和工具,相信這里有很多學習java的小伙伴,我創(chuàng)立了一個2000人學習扣群,479121291。每晚都有java的直播課程。無論是初級還是進階的小伙伴小編我都歡迎!

3.冒泡排序算法

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

4.快速排序算法

通過一趟排序?qū)⒋庞涗浄指畛瑟毩⒌膬刹糠?其中一部分記錄的關鍵字均比另一部分的關鍵字小,則可以分別對這兩部分記錄繼續(xù)進行排序,已達到整個序列有序的目的,本質(zhì)就是,找一個基位(樞軸,分水嶺,作用是左邊的都比它小,右邊的都比它大。

5.合并排序算法

歸并排序采用的是遞歸來實現(xiàn),屬于“分而治之”,將目標數(shù)組從中間一分為二,之后分別對這兩個數(shù)組進行排序,排序完畢之后再將排好序的兩個數(shù)組“歸并”到一起,歸并排序最重要的也就是這個“歸并”的過程,歸并的過程中需要額外的跟需要歸并的兩個數(shù)組長度一致的空間。

6.希爾排序算法

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

7.堆排序算法

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

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 1 初級排序算法 排序算法關注的主要是重新排列數(shù)組元素,其中每個元素都有一個主鍵。排序算法是將所有元素主鍵按某種方...
    深度沉迷學習閱讀 1,597評論 0 1
  • 排序的基本概念 在計算機程序開發(fā)過程中,經(jīng)常需要一組數(shù)據(jù)元素(或記錄)按某個關鍵字進行排序,排序完成的序列可用于快...
    Jack921閱讀 1,569評論 1 4
  • 今天看了一篇文章《年少不懂高曉松,讀懂已不再年少》,卻讓我了解了高曉松,也開始佩服他的生活態(tài)度。曾經(jīng)的我特別不喜感...
    萌萌噠滴黃花菜閱讀 559評論 0 0
  • 文/偉偉 清晨的薄霧還未散盡,金黃的曦光氤氳著淡淡的明輝,一縷接著一縷,靜靜的鋪滿剝落著紅漆的木門。 隨著吱呀一聲...
    大男人不霸道閱讀 471評論 0 1
  • 以后照顧好自己,喜歡你這么多年,在這個非特殊的日子里,我選擇了放棄,不是因為你不好,而是我給不了我想給你的幸福,我...
    文盲華仔閱讀 426評論 1 0

友情鏈接更多精彩內(nèi)容