1. 程式人生 > >排序演算法之氣泡排序【java實現】

排序演算法之氣泡排序【java實現】

氣泡排序介紹

基本思想就是相鄰資料交換,每次將最大或最小的數進行移動。

步驟:(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);
		}*/

	}
}