java内部排序之快速排序

mac2022-06-30  163

快速排序思想:

通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个过程递归进行,以此达到整个数据变成有序序列。

代码:

    public static void main(String[] args) throws Exception{         Integer[] arr=new Integer[]{12,1,9,5,3,71,24};         quickSort(arr,0,arr.length-1);         System.out.println(Arrays.toString(arr));     }

private static void quickSort(Integer[] arr,int left,int right){ int lt=left; int rt=right; int temp; //找到中轴值 int pivot=arr[(lt+rt)/2]; //通过循环最终是比pivot小的在pivot左边,比pivot大的在pivot的右边 while (lt<rt){ while (arr[lt]<pivot){ lt++; } while (arr[rt]>pivot){ rt--; } //比pivot小的在pivot左边,比pivot大的在pivot的右边 if(lt>=rt){ break; } temp=arr[lt]; arr[lt]=arr[rt]; arr[rt]=temp; if(arr[lt]==pivot){ rt--; } if(arr[rt]==pivot){ lt++; } } if(lt==rt){ lt++; rt--; } //左边递归 if(left<rt){ quickSort(arr,left,rt); } //右边递归 if(right>lt){ quickSort(arr,lt,right); } }

 

 


最新回复(0)