算法实现挑战:Java实现快速排序算法示例

原创 雨点打透心脏的1/2处 2024-12-01 08:06 67阅读 0赞

快速排序是一种高效的排序算法,其基本思想是通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字要小,然后分别对这两部分记录继续进行排序,以达到整个序列有序的要求。

以下是Java实现快速排序算法的示例代码:

  1. public class QuickSort {
  2. // 定义一个交换两个元素的方法
  3. private void swap(int[] arr, int i, int j) {
  4. int temp = arr[i];
  5. arr[i] = arr[j];
  6. arr[j] = temp;
  7. }
  8. // 快速排序的主方法
  9. public void quickSort(int[] arr, int low, int high) {
  10. if (low < high) { // 当前区间非空,进行分区操作
  11. int pivotIndex = partition(arr, low, high); // 获取枢轴元素的索引
  12. // 对枢轴左侧和右侧的区间递归调用快速排序方法
  13. quickSort(arr, low, pivotIndex - 1);
  14. quickSort(arr, pivotIndex + 1, high);
  15. }
  16. }
  17. // 分区操作,返回枢轴元素的索引
  18. private int partition(int[] arr, int low, int high) {
  19. // 选择数组最后一个元素作为枢轴元素
  20. int pivot = arr[high];
  21. // 初始化基准值为第一个元素
  22. int i = (low - 1);
  23. // 遍历数组,将小于等于枢轴的元素向左移动
  24. for (; i < high; i++) {
  25. if (arr[i] <= pivot) { // 如果当前元素小于等于枢轴
  26. swap(arr, i, (i + 1))); // 将当前元素与它后的一个元素交换位置
  27. i++; // 基准值向右移动一位,表示已经处理过的元素
  28. }
  29. }
  30. // 返回基准值(即枢轴元素)的索引
  31. return (i + 1));
  32. }
  33. // 测试快速排序方法
  34. public static void main(String[] args) {
  35. int[] arr = {5, 3, 9, 1, 7};
  36. QuickSort quickSort = new QuickSort();
  37. quickSort.quickSort(arr, 0, arr.length - 1);
  38. // 打印排序后的数组
  39. for (int i : arr) {
  40. System.out.print(i + " "));
  41. }
  42. }
  43. }

这段代码首先定义了快速排序的类,然后在main方法中创建了一个示例数组并调用快速排序方法进行排序。最后打印出排序后的结果。

文章版权声明:注明蒲公英云原创文章,转载或复制请以超链接形式并注明出处。

发表评论

表情:
评论列表 (有 0 条评论,67人围观)

还没有评论,来说两句吧...

相关阅读

    相关 java实现快速排序算法

    快排基本思想:首先选定一个轴值(就是比较的基准)将待排序的记录划分为两个独立的部分,左侧记录的关键码都是小于基准或等于轴值得,右侧记录的关键码都是大于或等于轴值,然后再针对这两

    相关 快速排序算法(Java实现)

    1、基本思想 通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以

    相关 快速排序算法(java实现)

    一.思想: 通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据比另一部分的所有数据都要小,然后再用递归方法对着两部分分别进行快速排序,当每一部分不能再细分

    相关 排序算法快速排序Java实现

    快速排序是一种交换排序,这种排序的思想是把数组通过不断的递归,把数组中的数据分成两部分,前半部分小于某一个数,后半部分大于这个数,接着再对这两部分分别使用这种思想进行交换排序。