快速排序是一种高效的排序算法,它使用分治策略将一个数组分为两个较小的子数组,然后递归地对这些子数组进行排序
public class QuickSort { public static void main(String[] args) { int[] arr = {10, 7, 8, 9, 1, 5}; int n = arr.length; System.out.println("原始数组:"); printArray(arr, n); quickSort(arr, 0, n - 1); System.out.println("\n排序后的数组:"); printArray(arr, n); } // 快速排序方法 static void quickSort(int[] arr, int low, int high) { if (low< high) { // 获取分区点 int pivotIndex = partition(arr, low, high); // 对左侧子数组进行快速排序 quickSort(arr, low, pivotIndex - 1); // 对右侧子数组进行快速排序 quickSort(arr, pivotIndex + 1, high); } } // 分区方法 static int partition(int[] arr, int low, int high) { // 选择最后一个元素作为基准值 int pivot = arr[high]; // 小于等于基准值的元素的索引 int i = low - 1; for (int j = low; j <= high - 1; j++) { // 如果当前元素小于等于基准值,将其与i+1位置的元素交换 if (arr[j] <= pivot) { i++; swap(arr, i, j); } } // 将基准值与i+1位置的元素交换 swap(arr, i + 1, high); return i + 1; } // 交换数组中两个元素的位置 static void swap(int[] arr, int i, int j) { int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } // 打印数组 static void printArray(int[] arr, int size) { for (int i = 0; i< size; i++) { System.out.print(arr[i] + " "); } System.out.println(); } }
在这个示例中,我们首先定义了一个名为quickSort
的方法,该方法接受一个整数数组、一个低索引和一个高索引作为参数。我们在main
方法中创建了一个整数数组,并调用quickSort
方法对其进行排序。partition
方法用于将数组划分为两个子数组,swap
方法用于交换数组中的两个元素。最后,我们使用printArray
方法打印原始数组和排序后的数组。