这是基础测试里的一道题吧,下面是我当初写的,仅供参考~~~
public class Test1 {
public static void main(String[] args) {
//定义一个int数组,测试quickSort方法,打印排序前后数组
int [] arr={3,3,1,3,9,6,6,7,9,0,2,10,100};
System.out.println("原始数组:");
printArr(arr);
quickSort(arr,0,arr.length-1);
System.out.println("排序后的数组:");
printArr(arr);
}
/*将每次迭代时的左角标元素作为基准值key, 以key为基准,
将数组元素划分在左右两侧,左边的元素小于等于key,右边的元素大于key; 然后对左右两侧的2个
子数组按照这种方式进行递归排列,最后得到数组就是从小到大排好序的*/
public static void quickSort(int [] arr, int left,int right){
int i=left;
int j=right;
int key=arr[i];
while(i<j){
while(j>i && arr[j]>=key){
j--;
}
arr[i]=arr[j];
while(i<j && arr[i]<=key){
i++;
}
arr[j]=arr[i];
}
arr[i]=key;
if(i-1>left){
quickSort(arr,left,i-1);
}
if(j+1<right){
quickSort(arr,j+1,right);
}
}
//将数据遍历打印功能封装成函数,方便使用
public static void printArr(int []arr){
int i;
for(i=0;i<arr.length;i++){
//数组元素间以,隔开
if(i!=arr.length-1){
System.out.print(arr[i]+", ");
}
//数组最后一个数后面不写,
else{
System.out.println(arr[i]);
}
}
}
}
|