常用排序(Java實現)


1.冒泡排序

public class BubbleSort {
	public static void main(String[] args) {
		int[] arr = new int[] { 3, 5, 1, 2, 6, 4 };
		System.out.println("排序前數組為:");
		for (int num : arr) {
			System.out.print(num + " ");
		}
		sort(arr);
		System.out.println();
		System.out.println("排序后的數組為:");
		for (int num : arr) {
			System.out.print(num + " ");
		}
	}

	public static void sort(int[] arr) {
		for (int i = 0; i < arr.length - 1; i++) {
			for (int j = 0; j < arr.length - 1 - i; j++) {
				if (arr[j] >= arr[j + 1]) {
					int num = arr[j];
					arr[j] = arr[j + 1];
					arr[j + 1] = num;
				}
			}
		}
	}
}

2.選擇排序

public class SelectionSort {
	public static void main(String[] args) {
		int[] arr = new int[] { 3, 5, 1, 2, 6, 4 };
		System.out.println("排序前");
		for (int num : arr) {
			System.out.print(num + " ");
		}
		for (int i = 0; i < arr.length - 1; i++) {// 做第i趟排序
			int min = i;
			for (int j = min + 1; j < arr.length; j++) {// 選最小的記錄
				if (arr[j] < arr[min]) {
					min = j;// 記下目前找到的最小值所在的位置
				}
			}
			// 在內層循環結束,也就是找到本輪循環的最小的數以后,再進行交換
			if (i != min) { // 交換a[i]和a[min]
				int temp = arr[i];
				arr[i] = arr[min];
				arr[min] = temp;
			}
		}
		System.out.println();
		System.out.println("排序后");
		for (int num : arr) {
			System.out.print(num + " ");
		}
	}
}

3.快速排序

public class QuickSort {
	public static void main(String[] args) {
		int[] arr = { 3, 5, 1, 2, 6, 4 };
		System.out.println("排序前數組為:");
		for (int num : arr) {
			System.out.print(num + " ");
		}
		int start = 0;
		int end = arr.length - 1;
		sort(arr, start, end);
		System.out.println();
		System.out.println("排序后的數組為:");
		for (int num : arr) {
			System.out.print(num + " ");
		}
	}

	public static int getMiddle(int[] arr, int start, int end) {
		int key = arr[start];
		while (start < end) {
			// 從后往前比較
			if (arr[end] >= key) {// 如果比關鍵值大,比較下一個,直到有比關鍵值小的交換位置,然后從前往后比較
				end--;
			}
			arr[start] = arr[end];

			// 從前往后比較
			if (arr[start] <= key) {
				start++;
			}
			arr[end] = arr[start];
		}
		arr[start] = key;
		return start;
	}

	public static void sort(int[] array, int start, int end) {
		if (start >= end) {
			return;
		}
		int index = getMiddle(array, start, end);
		sort(array, start, index - 1);
		sort(array, index + 1, end);
	}

}

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM