因為越大的元素會經過交換慢慢「浮」到數列的頂端,如同氣泡最終會上浮到頂端一樣比較相鄰元素,如果第乙個元素比第二個元素大,交換這兩個元素
經過第一趟排序後,最後乙個元素被交換成整個數列中最大的元素
再依次比較除最大的元素之外的數
重複執行以上的步驟,直到沒有元素可比較
從待排序數列中找到最小的數
通過跟起始位置的數進行交換 將這個最小的數放到數列的起始位置
從剩下未排好序的數列中找到最小的數,通過交換放到第二個數的位置
重複執行找最小數並交換的操作,直到所有的數都排好序
將未排序的元素插入到已排序的數列適當位置上,來實現所有元素有序將當前的元素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...