利用Java函数实现快速排序算法。
发布时间:2023-06-12 20:35:16
快速排序算法是一种高效的排序算法,其时间复杂度为O(nlogn)。其基本思想是通过分治法,选择一个基准元素将数组分成两个部分,一部分比基准元素小,一部分比基准元素大,并对两个子数组进行递归排序。
下面使用Java函数实现快速排序算法。
首先,我们定义一个函数partition,用于将数组分成两个部分。
public static int partition(int[] arr, int left, int right) {
int pivot = arr[left];//选择 个元素为基准元素
int i = left + 1;//左边指针
int j = right;//右边指针
while (i <= j) {
if (arr[i] > pivot && arr[j] < pivot) {//如果左边的数比基准元素大,右边的数比基准元素小
//交换左右指针所指的元素
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
i++;
j--;
}
if (arr[i] <= pivot) {
i++;
}
if (arr[j] >= pivot) {
j--;
}
}
//将基准元素与右边指针所指的元素交换
arr[left] = arr[j];
arr[j] = pivot;
return j;
}
这个函数的作用是将数组arr分成两个部分,其中左边的元素均小于等于基准元素,右边的元素均大于等于基准元素。
接下来,我们定义一个函数quickSort,用于递归地对数组进行排序。
public static void quickSort(int[] arr, int left, int right) {
if (left >= right) {//如果左右指针相遇
return;
}
int pivotIndex = partition(arr, left, right);//获取基准元素所在的位置
quickSort(arr, left, pivotIndex - 1);//对左侧部分进行递归排序
quickSort(arr, pivotIndex + 1, right);//对右侧部分进行递归排序
}
这个函数的作用是对数组arr进行排序,其中left为左边界,right为右边界。
最后,我们可以编写测试代码来验证程序的正确性。
public static void main(String[] args) {
int[] arr = {5, 4, 3, 2, 1};
quickSort(arr, 0, arr.length - 1);
System.out.println(Arrays.toString(arr)); //[1, 2, 3, 4, 5]
}
输出结果为[1, 2, 3, 4, 5],证明我们编写的程序是正确的。
总结:
本文利用Java函数实现了快速排序算法,其中partition函数用于将数组分成两个部分,quickSort函数用于递归地对数组进行排序。快速排序算法比较高效,其时间复杂度为O(nlogn),适用于大规模数据的排序。
