Java是一門廣為使用的編程語言,其中的排序算法有很多種。本文將介紹Java中的兩種排序:選擇排序和快速排序。
選擇排序是一種簡單的排序算法。它的基本思想是從待排序的數據元素中選擇最小元素放在最前面,再從剩余未排序元素中選擇最小元素放在已排序序列的后面,以此類推,直到所有元素都排好序。
public static void selectionSort(int[] arr) { int n = arr.length; for (int i = 0; i< n - 1; i++) { int minIndex = i; for (int j = i + 1; j< n; j++) { if (arr[j]< arr[minIndex]) { minIndex = j; } } int temp = arr[i]; arr[i] = arr[minIndex]; arr[minIndex] = temp; } }
然而,選擇排序的時間復雜度為O(n^2),在數據規模較大時會比較慢。因此,更高效的排序算法——快速排序應運而生。
快速排序是將一個待排序的序列分成兩個部分,其中一部分的所有元素均小于另一部分中的所有元素,然后再對兩部分分別采用快速排序算法,直到各部分只有一個元素就為止。
public static void quickSort(int[] arr, int low, int high) { if (low< high) { int pivot = partition(arr, low, high); quickSort(arr, low, pivot - 1); quickSort(arr, pivot + 1, high); } } private static int partition(int[] arr, int low, int high) { int pivot = arr[high]; int i = low - 1; for (int j = low; j< high; j++) { if (arr[j]< pivot) { i++; int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } int temp = arr[i + 1]; arr[i + 1] = arr[high]; arr[high] = temp; return i + 1; }
快速排序的時間復雜度為O(nlogn),效率比選擇排序高很多,因此在實際應用中,快速排序被廣泛使用。