排序演算法之氣泡排序【java實現】
阿新 • • 發佈:2018-11-20
氣泡排序介紹
基本思想就是相鄰資料交換,每次將最大或最小的數進行移動。
步驟:(1)對陣列中的各資料,依次比較相鄰的兩個元素的大小。
(2)如果前面的資料大於(小於)後面的資料,就交換這兩個資料。經過第一輪的多次比較排序後,便可以將最小 (大)的資料排好。
(3)再用同樣的方法把剩下的資料逐個進行比較,最後便可按照小到大的順序排好陣列各資料。
下面是程式碼:每次將最大的數冒泡到後面,每排好一個數,裡層for迴圈都-i,也就是不再檢視已經排好的資料,優化程式碼時長。
package zhgyu.sort; import java.util.ArrayList; import java.util.Scanner; /** * 氣泡排序 * @author zhgyu * */ public class BubbleSort { public static ArrayList<Integer> bubbleSort(ArrayList<Integer> list) { // int num = 0; for(int i = 0; i < list.size()-1; i++) { //冒泡到後面的數不用再次遍歷,節省時間 for(int j = 0; j <list.size() - 1 - i; j++) { if(list.get(j) > list.get(j+1)) { //替換 int temp = list.get(j); //使用list集合的set方法,找到位置並將數字賦值到該位置 list.set(j, list.get(j+1)); list.set(j+1, temp); } } } return list; } public static void main(String[] args) { //利用動態陣列 ArrayList<Integer> list = new ArrayList<>(); Scanner s = new Scanner(System.in); while(true) { System.out.println("請輸入數字(輸入0結束輸入):"); int num = s.nextInt(); if(num == 0) { break; } list.add(num); } System.out.println("結束輸入!"); //氣泡排序演算法 list = bubbleSort(list); //遍歷排序後的陣列 System.out.println("排序後的list:"); for(int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); } /* for(Integer i: list) { System.out.println(i); }*/ } }