大家可以关注一下专栏,方便大家需要的时候直接查找,专栏将持续更新~
题目描述
编写一个Java程序,实现快速排序算法。程序需要能够接收一个整型数组作为输入,并输出排序后的数组。
快速排序是一种高效的排序算法,采用分而治之的策略,通过递归的方式将数据分为较小的数据子集进行排序。快速排序的基本思想是,通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。
解题思路
快速排序的核心思想是选定一个元素作为"基准",将数组分为两个部分,将小于基准的元素放到基准前面,大于基准的元素放到基准后面,然后递归地对两个子数组进行快速排序。具体步骤如下:
- 选择基准元素。通常选择数组的第一个元素。
- 分区操作,将小于基准的元素移到基准前面,大于基准的元素移到基准后面。
- 递归地对基准前后的子数组进行快速排序。
源码答案
public class QuickSort {
public static void main(String[] args) {
int[] array = {10, 7, 8, 9, 1, 5}; // 测试数组
quickSort(array, 0, array.length - 1);
for (int i : array) {
System.out.print(i + " ");
}
}
public static void quickSort(int[] array, int low, int high) {
if (low < high) {
// 找到分区点
int pivot = partition(array, low, high);
// 分别对分区点前后的子数组进行快速排序
quickSort(array, low, pivot - 1);
quickSort(array, pivot + 1, high);
}
}
public static int partition(int[] array, int low, int high) {
// 选择第一个元素作为基准
int pivot = array[low];
while (low < high) {
// 从后向前找到小于基准的元素
while (low < high && array[high] >= pivot) {
high--;
}
array[low] = array[high];
// 从前向后找到大于或等于基准的元素
while (low < high && array[low] <= pivot) {
low++;
}
array[high] = array[low];
}
// 将基准元素放到正确的位置
array[low] = pivot;
return low;
}
}
输出结果
程序运行后,输出应为:1 5 7 8 9 10,这是对输入数组进行快速排序后的结果。
AI时代的游轮已经到来
如果你觉得开发过程中存在重复性工作,效率不够高。
不妨看看影子的AI+编程玩法,助力每一位编程人员提高效率,无论你是在校学生或是工作者,都应为未来的AIG时代做准备。
AI编程学习资料https://blog.csdn.net/yingzix688/article/details/137894050