美文网首页
3.1.0 快速排序

3.1.0 快速排序

作者: RockyLuo_290f | 来源:发表于2019-05-16 04:18 被阅读0次

    quicksort

    
    public class QuickSort {
        
        public static void sort(int[] arr) {
            if(arr == null || arr.length < 2) return;
            quicksort(arr,0, arr.length -1);
        }
    
        public static void quicksort(int[] arr, int left, int right) {
            if(left < right) {
                int[] pos = partition(arr, left, right);
                quicksort(arr,left,pos[0]-1);
                quicksort(arr, pos[1]+1,right);
            }
            
        }
        //return array[] 2 with leftboundary and rightboundary
        public static int[] partition(int[] arr, int left, int right) {
            if(left == right) return new int[] {left,left};
            int less = left -1;
            int more = right;
            int target = arr[right];
            
            while(left < more) {
                if(arr[left] < target) {
                    swap(arr, ++less, left++);
                }else if(arr[left] > target) {
                    swap(arr,--more,left);
                }else {
                    left++;
                }
            }
            swap(arr, more,right);
            return new int[] {less+1, more};
        }
        
        public static void swap(int[] arr, int i, int j) {
            int tmp = arr[i];
            arr[i] = arr[j];
            arr[j] = tmp;
        }
        
        public static void main(String[] args) {
            int [] arr = {4,3,2,1};
            sort(arr);
            for(int i=0; i < arr.length;i++) {
                System.out.println(arr[i]);
            }
        }
    }
    

    相关文章

      网友评论

          本文标题:3.1.0 快速排序

          本文链接:https://www.haomeiwen.com/subject/nunvaqtx.html