Java演算法之排序
阿新 • • 發佈:2019-02-17
氣泡排序
氣泡排序它的基本思想是:兩兩比較相鄰的關鍵字,如果反序則交換,直到沒有反序的記錄為止。
private static void bubbleSort(List<Integer> list) { boolean flag = true;//判斷互換狀態,如果一輪下拉已經不互換了,說明排序已經正確了 for (int i = 0;i < list.size() && flag;i++) { flag = false;//製假,如果這一輪迴圈對比中沒有反序則推出外迴圈 for (int j = list.size()-1;j > i;j--) { if (list.get(j) < list.get(j-1)) { //交換值 int temp = list.get(j-1); list.set(j-1,list.get(j)); list.set(j,temp); //制真,說明還有反序,需要繼續迴圈 flag = true; } } } }
選擇排序法
氣泡排序的思想就是不斷的交換,通過交換完成最終的排序。選擇排序法是在排序時找到合適的關鍵字再進行交換。
private static void selectSort(List<Integer> list) { int main;//每次對比的主鍵 for (int i = 0;i < list.size(); i++) { main = i; for (int j = i + 1; j < list.size(); j++) { if (list.get(main) > list.get(j)) { main = j;//如果反序則記錄 } } if (main != i) {//判斷本輪迴圈是否遇到反序,如果遇到反序則交換資料 int temp = list.get(i); list.set(i,list.get(main)); list.set(main,temp); } } }