面试可愿意考这玩意了!!!
快排思想:
先找一个中间的标靶,然后遍历数组
将>标靶的元素放到标靶右边
将< 标靶的元素放到标靶左边
然后递归的排序左右两边
public static void quick_sort(int[] nums ,int left ,int end){
if(left >= end) return;
int pivot = nums[left+end >>1];
int i = left -1;
int j = end+1;
while(i < j){
do i++;while(nums[i] < pivot);
do j-- ;while(nums[j] > pivot);
if(i < j) {
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}else{
quick_sort(nums,left,j);
quick_sort(nums,j+1,end);
}
}
}
public static void main(String[] args) {
int[] nums2 = {1,2,4,2,3,5,1,2,3};
quick_sort(nums2,0,nums2.length-1);
for (int i = 0; i < nums2.length; i++) {
System.out.println(nums2[i]);
}
}