java排序演算法

2021-09-23 08:04:42 字數 1635 閱讀 4084

因為越大的元素會經過交換慢慢「浮」到數列的頂端,如同氣泡最終會上浮到頂端一樣

比較相鄰元素,如果第乙個元素比第二個元素大,交換這兩個元素

經過第一趟排序後,最後乙個元素被交換成整個數列中最大的元素

再依次比較除最大的元素之外的數

重複執行以上的步驟,直到沒有元素可比較

從待排序數列中找到最小的數

通過跟起始位置的數進行交換 將這個最小的數放到數列的起始位置

從剩下未排好序的數列中找到最小的數,通過交換放到第二個數的位置

重複執行找最小數並交換的操作,直到所有的數都排好序

將未排序的元素插入到已排序的數列適當位置上,來實現所有元素有序

將當前的元素n和當前元素前面n-1個元素從後至前比較

找到第乙個小於或者等於當前元素的元素k

將k後面到n前面的元素依次後移

將n放到k的後面

依次執行以上步驟,直到所有元素都排完

選擇乙個元素當作基準值

設定兩個指標,乙個在隊首、乙個在隊尾

隊首指標尋找比基準值大的元素,隊尾指標尋找比基準值小的元素

交換兩個指標尋找到的元素,繼續尋找,直到兩指標相遇

將基準值和指標位置元素交換

遞迴把小於基準值的子數列和大於基準值的子數列分別進行排序

選擇乙個元素當作基準值

設定兩個指標,乙個在隊首、乙個在隊尾

設定坑的位置,初始時等於基準值的位置

從隊尾指標開始向前移動,找到比基準值小的元素,將這個元素放到坑的位置,同時這個元素原來的位置當作新的坑,隊尾指標停止

隊首指標開始向後移動,找到比基準值大的元素,將這個元素放到坑的位置,同時這個元素原來的位置當作新的坑,隊首指標停止

重複4,5步驟,直到兩指標相遇

將基準元素放到兩指標相遇的位置

遞迴把小於基準值的子數列和大於基準值的子數列分別進行排序

將數列一分為二

遞迴的對兩個子數列進行歸併,遞迴的終止條件是子數列長度小於等於1

將兩個有序的子數列歸併成有序的大數列

使用「堆」這種資料結構來實現排序。堆是一種具有特殊性質的完全二叉樹。分為兩種:

最大堆:父節點的值總是大於或者等於兩個子節點的值

最小堆:父節點的值總是小於或者等於兩個子節點的值

堆與陣列的聯絡:如果乙個元素在陣列中的索引是n,那麼這個元素的左子節點的索引是2n+1,右子節點的索引是2n+2;如果乙個子節點的索引是n,那麼它的父節點的索引是(n-1)/2

將數列構造成乙個最大堆,此時堆頂元素就是整個數列最大的元素

將堆頂元素和最後乙個元素進行交換,此時最後乙個元素是整個數列最大的元素

將剩餘的n-1個元素再次構建成乙個最大堆,再將堆頂元素和第n-1個元素交換

重複執行構建最大堆和交換操作,直到所有元素都操作完

計數排序適用於數列的數值的範圍在較小的情況下。通過標記數值出現的次數來實現排序,不通過比較來實現排序

獲取數列的取值範圍,根據取值範圍新建標記陣列

遍歷數列,在標記陣列中標記每個元素出現的次數

遍歷標記陣列

java排序演算法

1.定義 通過比較來確定輸入序列1,a 2,a n 的元素間相對次序的排序演算法稱為比較排序演算法。2.演算法解釋 1 選擇排序 選擇排序的基本思想是對待排序的記錄序列進行n 1遍的處理,第i遍處理是將l i.n 中最小者與l i 交換位置。這樣,經過i遍處理之後,前i個記錄的位置已經是正確的了。2...

Java排序演算法

回顧一下排序演算法 稍微地設計一下基礎類 插入排序 插入排序 insertion sort 的基本思想是 每次將乙個待排序的記錄,按其關鍵字大小插入到前面已經排好序的子檔案中的適當位置,直到全部記錄插入完成為止。氣泡排序 氣泡排序 bubblesort 的基本概念是 依次比較相鄰的兩個數,將小數放在...

java 排序演算法

氣泡排序 public void bubblesort int array 選擇排序 選擇排序 public void selectsort int a else 判斷 j 1 或者 就是第乙個小於等於temp資料的位置 datas j 1 temp 快速排序 快速排序 param datas pu...