Java 菜鸟教程

Java 流程控制

Java 数组

Java 面向对象(I)

Java 面向对象(II)

Java 面向对象(III)

Java 异常处理

Java 列表(List)

Java Queue(队列)

Java Map集合

Java Set集合

Java 输入输出(I/O)

Java Reader/Writer

Java 其他主题

Java 程序实现快速排序算法

Java 实例大全

在此示例中,我们将学习在Java中实现快速排序算法。

在学习Java中的快速排序算法之前,请确保您了解快速排序算法的工作原理。

示例:实现快速排序算法的Java程序

//用Java快速排序
import java.util.Arrays;

class Main {

  //根据数据轴划分数组
  int partition(int array[], int low, int high) {

    //选择最后一个元素作为轴
    int pivot = array[high];

    //初始化第二个指针
    int i = (low - 1);

    //把小于轴的元素放在左边
    //大于枢轴右侧的枢轴
    for (int j = low; j < high; j++) {

       //将所有元素与pivot进行比较
       //交换大于pivot的元素
       //元素小于pivot
       //按降序排序
      // if (array[j] >= pivot)
      if (array[j] <= pivot) {

        //第二个指针递增。
        //将较小的元素替换为较大的元素
        i++;
        int temp = array[i];
        array[i] = array[j];
        array[j] = temp;
      }
    }

        //所以左边的元素更小
        //右边的元素大于pivot
    int temp = array[i + 1];
    array[i + 1] = array[high];
    array[high] = temp;
    return (i + 1);
  }

  void quickSort(int array[], int low, int high) {
    if (low < high) {

       //选择轴位置并将所有元素放小
       //左轴大于轴,右轴大于轴
      int pi = partition(array, low, high);

      //对轴左侧的元素进行排序
      quickSort(array, low, pi - 1);

      //对轴右侧的元素进行排序
      quickSort(array, pi + 1, high);
    }
  }

  public static void main(String args[]) {

    //创建一个未排序的数组
    int[] data = { 8, 7, 2, 1, 0, 9, 6 };
    int size = data.length;

    //创建Main类的对象
    Main qs = new Main();

    //将第一个和最后一个索引传递给数组
    qs.quickSort(data, 0, size - 1);
    System.out.println("排序数组: ");
    System.out.println(Arrays.toString(data));
  }
}

输出1

未排序的数组:
[8, 7, 2, 1, 0, 9, 6]
排序数组:
[0, 1, 2, 6, 7, 8, 9]

在这里,数组的元素按升序排序。 如果我们想要按降序对元素进行排序,那么在Partition()方法的for循环中,我们可以将代码更改为:

//小于符号更改为大于
if (array[j] >= pivot) {

  Java 实例大全