对于一个int数组,请编写一个快速排序算法,对数组元素排序。
给定一个int数组A及数组的大小n,请返回排序后的数组。
测试样例:
[1,2,3,5,2,3],6
[1,2,2,3,3,5]
解题思路 :运用递归的思想 每次将传入数组的最后一个元素作为基准值,先将小于它的数全部移(交换)到数组的前面,最后将它放到中间,对两边进行同样的操作。。。
import java.util.*;
public class QuickSort {
public int[] quickSort(int[] A, int n) {
// write code here
quicksort(A,0,n-1);
return A;
}
public void quicksort(int[] A,int left,int right){
if(left<right){
int temnum = left;
int cou = A[right];
int tem = 0;
for(int i=left;i<right;i++){
if(A[i]<cou){ //比较 如果小于基准值则放到数组的前面
tem = A[i];
A[i] = A[temnum];
A[temnum] = tem;
temnum = temnum+1;
}
}
if(temnum!=right){ //将基准值放到中间
A[right] = A[temnum];
A[temnum] = cou;
}
quicksort(A,left,temnum-1); //对基准值两边的数组进行相同的操作
quicksort(A,temnum+1,right);
}
}
}