集册 Java实例教程 基于int数组的快速排序

基于int数组的快速排序

欢马劈雪     最近更新时间:2020-01-02 10:19:05

507
提示:您可在线编辑运行本教程的实例 - 运行实例,去试试!
基于int数组的快速排序
/** 来自 n o w    j a v a  . c o m**/

import java.util.ArrayList;

import java.util.List;

import java.util.Random;


public class Main {

  public static void main(String ags[]) {

    int a[] = new int[10];

    for (int i = 0; i < a.length; i++) {

      a[i] = new Random().nextInt(10);

    }

    quicksort(a, 0, a.length - 1);


  }


  static int patition(int[] a, int start, int end) {

    int pivot = a[start];

    List s = new ArrayList();

    List l = new ArrayList();

    /*
    来 自*
     N  o w  J a v a . c o m
    */

    for (int j = start + 1; j <= end; j++) {

      if (a[j] <= pivot) {

        s.add(a[j]);

      } else {

        l.add(a[j]);

      }

    }


    for (int j = 0; j < s.size(); j++) {

      a[start + j] = (Integer) s.toArray()[j];

    }


    a[start + s.size()] = pivot;

    for (int j = 0; j < l.size(); j++) {

      a[s.size() + start + j + 1] = (Integer) l.toArray()[j];

    }


    return start + s.size();

  }


  static void quicksort(int[] a, int start, int end) {

    if (start < end) {

      int q = patition(a, start, end);

      quicksort(a, start, q - 1);

      quicksort(a, q + 1, end);

      printa(a, start, end);

    }

  }


  
展开阅读全文