在網上找來找去,基本都是用c語言實現的快速排序,或者用java寫的但是不夠簡潔。於是自己就用java寫了一個。我們知道快速排序的時間複雜度平均為O(nlog2n),喜歡基本無序的情況,代碼如下:
public class quickSort {/** * @param 快速排序 */public static void main(String[] args) { int data[] = {23,4,3,12,12,54,9,80,31}; quickSort qu = new quickSort(); qu.QuickSort(data); qu.display(data);} private void QuickSort(int []data){ quickSort.sort(data,0,data.length-1); } private static void sort(int data[],int left,int right){ //進行快速排序 int i ,j ; if(left<right){ i = left; j=right+1; do{ do i++;while(data[i]<data[left]); do j--;while(data[j]>data[left]); if(i<j) { data[i] = data[i]^data[j]; data[j] = data[i]^data[j]; data[i] = data[i]^data[j]; } }while(i<j); //當left==j時,如果使用這種方式進行交換的時候,會造成data[left]=data[j]=0 if(left!=j){ data[left] = data[left]^data[j]; data[j] = data[left]^data[j]; data[left] = data[left]^data[j]; } quickSort.sort(data,left,j-1); //其實a[j]這個數的位置已經確定了 quickSort.sort(data,j+1,right); } } private void display(int data[]){ for(int a:data) System.out.print(a+"--"); }}