排序之快速排序java版

比较好理解的方法

 public static void quickSort(int[] a, int left, int right){
            int index=partition(a,left,right);
            //排序左半部分
            if(left<index-1){
                quickSort(a,left,index-1);
            }
            //排序右半部分
            if(index<right){
                quickSort(a,index,right);
            }
         }
         static int partition(int arr[],int left,int right){
                 //挑出一个基准点(随意,有优化的算法本文没涉及)
                 int pivot=arr[(left+right)/2];
                 int temp;
                 while(left<=right){
                     //找出左边中应放到右边的元素
                     while(arr[left]<pivot){
                         left++;
                     }
                     while(arr[right]>pivot){
                         right--;
                     }
                     //交换元素,同时调整左右索引值
                     if(left<=right){
                        temp=arr[left];            
                        arr[left]=arr[right];
                        arr[right]=temp;
                        left++;
                        right--;            
                     }
                 }
                 return left;
         }

你可能感兴趣的:(排序之快速排序java版)