快速排序
先找的个准基数,然后一个从数组最后开始遍历直到找到一个比准基数小的数,另一个循环从数组开头遍历直到找到一个比准基数大的数。将两个是交换,再把准基数换下。将左右两边的数组 用递归调用再排序
public class HomeWork {
public static void main(String[] args) {
int arr[] = {5,3,12,4};
my(arr,0,arr.length-1);
for (int i : arr) {
System.out.print(i+" ");
}
}
public static void my(int[] arr,int first,int high){
if(first>high){
return;
}//这是递归的出口
int temp=0,t=0;
int i = first;
int j = high;
temp = arr[i];
while(i<j){
while(arr[j]>=temp&&i<j){
j--;
}
while(arr[i]<=temp&&i<j){
i++;
}
if(i<j){
t = arr[j];
arr[j] = arr[i];
arr[i] = t;
}
}
arr[first] = arr[i];
arr[i] = temp;
my(arr,first,j-1);
my(arr,j+1,high);
}
}