📜  Java程序实现快速排序算法

📅  最后修改于: 2020-09-26 19:12:29             🧑  作者: Mango

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

示例:实现快速排序算法的Java程序
// Quick sort in Java

import java.util.Arrays;

class Main {

  // divide the array on the basis of pivot
  int partition(int array[], int low, int high) {

    // select last element as pivot
    int pivot = array[high];

    // initialize the second pointer
    int i = (low - 1);

    // Put the elements smaller than pivot on the left and
    // greater than pivot on the right of pivot
    for (int j = low; j < high; j++) {

      // compare all elements with pivot
      // swap the element greater than pivot
      // with element smaller than pivot
      // to sort in descending order
      // if (array[j] >= pivot)
      if (array[j] <= pivot) {

        // increase the second pointer if
        // smaller element is swapped with greater
        i++;
        int temp = array[i];
        array[i] = array[j];
        array[j] = temp;
      }
    }

    // put pivot in position
    // so that element on left are smaller
    // element on right are greater than 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) {

      // Select pivot position and put all the elements smaller
      // than pivot on the left and greater than pivot on right
      int pi = partition(array, low, high);

      // sort the elements on the left of the pivot
      quickSort(array, low, pi - 1);

      // sort the elements on the right of pivot
      quickSort(array, pi + 1, high);
    }
  }

  // Driver code
  public static void main(String args[]) {

    // create an unsorted array
    int[] data = { 8, 7, 2, 1, 0, 9, 6 };
    int size = data.length;

    // create an object of the Main class
    Main qs = new Main();

    // pass the array with the first and last index
    qs.quickSort(data, 0, size - 1);
    System.out.println("Sorted Array: ");
    System.out.println(Arrays.toString(data));
  }
}

输出1

Unsorted Array:
[8, 7, 2, 1, 0, 9, 6]
Sorted Array:
[0, 1, 2, 6, 7, 8, 9]

在此,数组的元素按升序排序。如果要按降序对元素进行排序,则可以在partition()方法的for循环内,将代码更改为:

// the less than sign is changed to greater than
if (array[j] >= pivot) {

如果您想了解有关快速排序算法的更多信息,请访问快速排序算法。