氣泡排序(機試題)

Allen-Liu發表於2017-10-07

題目要求:輸入一個陣列,不同的數之間用一個空格隔開。輸出為排好序的陣列。要求使用氣泡排序

import java.util.Scanner;
public class BubbleSort
{
	/**
	 * 氣泡排序
	 */
	public static void main(String[] args)
	{
		Scanner str = new Scanner(System.in);
		String[] strlist = str.nextLine().split(" ");//這裡想獲得字串陣列,從而獲得輸入數值的個數
		int[] list = new int[strlist.length];//因為java中陣列需要在使用前給定大小,大小從字串陣列獲得
		for (int i = 0; i < strlist.length; i++)
		{
			list[i] = Integer.parseInt(strlist[i]);
		}
		bubbleSort(list);//呼叫函式對陣列進行排序
		for (int i = 0; i < list.length; i++)
		{
			System.out.print(list[i] + " ");
		}
		//或使用下面的foreach的方法遍歷輸出
//		for (int e : list)
//		{
//			System.out.print(e + " ");
//		}
		

	}
	//氣泡排序函式
	public static void bubbleSort(int[] list)
	{
		boolean indi = true;
		for (int k = 1; k < list.length && indi; k++)
		{
			//判斷本次迴圈是否有交換,如果沒有則結束迴圈
			indi = false;
			for (int i = 0; i < list.length - k; i++)
			{
				if (list[i] > list[i + 1])
				{
					int temp = list[i];
					list[i] = list[i + 1];
					list[i + 1] = temp;
					indi = true;//表示本次迴圈有交換,迴圈還需要繼續
				}
			}
		}
	}
}


相關文章