package javaio.recursion;
import java.util.Arrays;
public class Quiklysort {
public static void main(String[] args) {
int []a=new int[]{1,8,8,7,4,6,9,4,5,1};
sort(a);
System.out.println(Arrays.toString(a));
}
public static void sort(int[] nums) {
Qsort(nums,0,0,nums.length-1);
}
public static void Qsort(int[] nums,int ba,int start,int end) {
int size=end-start;
int s=start;
int e=end;
while(start<end)
{
while(nums[end]>=nums[ba]&&end!=ba)
end--;
if(nums[end]<nums[ba]) {
int tmp=nums[end];
nums[end]=nums[ba];
nums[ba]=tmp;
ba=end;
start++;
}
while(nums[start]<=nums[ba]&&start!=ba)
start++;
if(nums[start]>nums[ba])
{
int tmp=nums[start];
nums[start]=nums[ba];
nums[ba]=tmp;
ba=start;
end--;
}
}
if(size<=1)
return;
if(ba-1!=s)
Qsort(nums,s,s,ba-1);
if(ba+1!=e)
Qsort(nums,ba+1,ba+1,e);
}
}