Java 菜鳥教程

Java 流程控制

Java 數(shù)組

Java 面向?qū)ο?I)

Java 面向?qū)ο?II)

Java 面向?qū)ο?III)

Java 異常處理

Java 列表(List)

Java Queue(隊(duì)列)

Java Map集合

Java Set集合

Java 輸入輸出(I/O)

Java Reader/Writer

Java 其他主題

Java 程序?qū)崿F(xiàn)快速排序算法

Java 實(shí)例大全

在此示例中,我們將學(xué)習(xí)在Java中實(shí)現(xiàn)快速排序算法。

在學(xué)習(xí)Java中的快速排序算法之前,請(qǐng)確保您了解快速排序算法的工作原理。

示例:實(shí)現(xiàn)快速排序算法的Java程序

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

class Main {

  //根據(jù)數(shù)據(jù)軸劃分?jǐn)?shù)組
  int partition(int array[], int low, int high) {

    //選擇最后一個(gè)元素作為軸
    int pivot = array[high];

    //初始化第二個(gè)指針
    int i = (low - 1);

    //把小于軸的元素放在左邊
    //大于樞軸右側(cè)的樞軸
    for (int j = low; j < high; j++) {

       //將所有元素與pivot進(jìn)行比較
       //交換大于pivot的元素
       //元素小于pivot
       //按降序排序
      // if (array[j] >= pivot)
      if (array[j] <= pivot) {

        //第二個(gè)指針遞增。
        //將較小的元素替換為較大的元素
        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);

      //對(duì)軸左側(cè)的元素進(jìn)行排序
      quickSort(array, low, pi - 1);

      //對(duì)軸右側(cè)的元素進(jìn)行排序
      quickSort(array, pi + 1, high);
    }
  }

  public static void main(String args[]) {

    //創(chuàng)建一個(gè)未排序的數(shù)組
    int[] data = { 8, 7, 2, 1, 0, 9, 6 };
    int size = data.length;

    //創(chuàng)建Main類的對(duì)象
    Main qs = new Main();

    //將第一個(gè)和最后一個(gè)索引傳遞給數(shù)組
    qs.quickSort(data, 0, size - 1);
    System.out.println("排序數(shù)組: ");
    System.out.println(Arrays.toString(data));
  }
}

輸出1

未排序的數(shù)組:
[8, 7, 2, 1, 0, 9, 6]
排序數(shù)組:
[0, 1, 2, 6, 7, 8, 9]

在這里,數(shù)組的元素按升序排序。 如果我們想要按降序?qū)υ剡M(jìn)行排序,那么在Partition()方法的for循環(huán)中,我們可以將代碼更改為:

//小于符號(hào)更改為大于
if (array[j] >= pivot) {

  Java 實(shí)例大全

丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清