主要寫一下快速排序,基本思想就是:
隨機取一個值作爲中間值,此處我們取第一個,然後按照大於中間值得數放到其右邊,小於中間值的數放到其左邊,依次下去,知道排序完成。
時間複雜度爲:O(nlogN)
空間複雜度:O(N)
public class quickSort {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] numList = {3,7,6,4,9,7,8,1,10};
quick(numList);
for(int i=0;i<numList.length;i++){
System.out.print(numList[i]+" ");
}
}
public static void quick(int[] num){
if(num.length > 0){
quickSort(num,0,num.length-1);
}
}
public static void quickSort(int[] num,int low,int high){
if (low < high) {
int middle = getMiddle(num,low,high);
quickSort(num,low,middle-1);
quickSort(num,middle+1,high);
}
}
public static int getMiddle(int[] num,int low,int high){
int middle = num[low];
while(low<high){
if((low<high)&&(num[high]>=middle)){
high--;
}
num[low] = num[high];
if((low<high)&&(num[low]<=middle)){
low++;
}
num[high] = num[low];
}
num[low] = middle;
return low;
}
}