快速排序,升序。釋義參考百度百科
public static void quickSort(int[] ints, int start, int end) { int pivot = ints[start], i = start, j = end; while (i < j) { // 從右向左找小於pivot的數來填ints[i] while (i < j && ints[j] >= pivot) { j--; } if (i < j) { ints[i] = ints[j]; i++; } // 從左向右找大於或等於pivot的數來填ints[j] while (i < j && ints[i] < pivot) { i++; } if (i < j) { ints[j] = ints[i]; } ints[i] = pivot; // 左邊區間快速排序 quickSort(ints, start, i - 1); // 右邊區間快速排序 quickSort(ints, i + 1, end); } }
測試代碼:
import java.util.Arrays; public class QuickSort { public static void main(String[] args) { int[] ints = {9, 12, 0, 5, -1, -1}; quickSort(ints, 0, ints.length - 1); System.out.println(Arrays.toString(ints)); } public static void quickSort(int[] ints, int start, int end) { int pivot = ints[start], i = start, j = end; while (i < j) { // 從右向左找小於pivot的數來填ints[i] while (i < j && ints[j] >= pivot) { j--; } if (i < j) { ints[i] = ints[j]; i++; } // 從左向右找大於或等於pivot的數來填ints[j] while (i < j && ints[i] < pivot) { i++; } if (i < j) { ints[j] = ints[i]; } ints[i] = pivot; // 左邊區間快速排序 quickSort(ints, start, i - 1); // 右邊區間快速排序 quickSort(ints, i + 1, end); } } }