主要写一下快速排序,基本思想就是:
随机取一个值作为中间值,此处我们取第一个,然后按照大于中间值得数放到其右边,小于中间值的数放到其左边,依次下去,知道排序完成。
时间复杂度为: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;
}
}