熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

Java版快速排序

2013-11-23 19:02:31  來源: Java核心技術 
    /*
   
    * 快速排序是最流行的排序算法本質上通過把一個數組劃分為兩個子數組
   
    * 然後遞歸地調用自身為每一個子數組進行快速排序來實現
   
    * ArrayInsjava
   
    * l
   
    */
   
    package linzhanghuiquicksort;
   
    public class ArrayIns {
   
    private long[] theArray;
   
    private int nElems;
   
    public ArrayIns(int max) {
   
    theArray = new long[max];
   
    nElems = ;
   
    }
   
    public void insert(long value) {
   
    theArray[nElems] = value;
   
    nElems++;
   
    }
   
    public void display() {
   
    Systemoutprint(A=
   
    for(int j=; j<nElems; j++)
   
    Systemoutprint(theArray[j] +
   
    Systemoutprintln(
   
    }
   
    public void quickSort() {
   
    recQuickSort( nElems
   
    }
   
    public void recQuickSort(int left int right) {
   
    if(rightleft <=
   
    return;
   
    else {
   
    long pivot = theArray[right];
   
    int partition = partitionIt(left right pivot)
   
    recQuickSort(left partition
   
    recQuickSort(partition+ right)
   
    }
   
    }
   
    public int partitionIt(int left int right long pivot) {
   
    int leftPtr = left;
   
    int rightPtr = right;
   
    while(true) {
   
    while( theArray[++leftPtr] < pivot)
   
    ;
   
    while(rightPtr > && theArray[rightPtr] > pivot)
   
    ;
   
    if(leftPtr >= rightPtr)
   
    break;
   
    else
   
    swap(leftPtr rightPtr)
   
    }
   
    swap(leftPtr right)
   
    return leftPtr;
   
    }
   
    public void swap(int dex int dex) {
   
    long temp = theArray[dex];
   
    theArray[dex] = theArray[dex];
   
    theArray[dex] = temp;
   
    }
   
    }
   
    /*
   
    * 程序隨機產生位隨機數顯示這個隨機數後對其進行快速排序並輸出
   
    * l
   
    */
   
    package linzhanghuiquicksort;
   
    public class QuickSortApp {
   
    public static void main(String[] args) {
   
    int maxSize = ;
   
    ArrayIns arr;
   
    arr = new ArrayIns(maxSize)
   
    for(int j=; j<maxSize; j++) {
   
    long n = (int)(javalangMathrandom()*
   
    arrinsert(n)
   
    }
   
    arrdisplay()
   
    arrquickSort()
   
    arrdisplay()
   
    }
   
    }
From:http://tw.wingwit.com/Article/program/Java/hx/201311/26174.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.