快速排序反复练习

来源:互联网 发布:python库大全 编辑:程序博客网 时间:2024/04/28 10:00

对于快排的原理我就不在这里阐述的,这些原理在网上或书上都有,我只在这里贴出自己的代码,并写出自己不断练习中一直容易犯晕的地方

public class QuickSort {public static void main(String[] args) {        int[] arr={5,3,9,4,0,12,454,-1};for(int a:arr){System.out.print(a+"\t");}System.out.println();sort(arr,0,arr.length-1);for(int a:arr){System.out.print(a+"\t");}}sc.close();}public static void sort(int[] arr,int start,int end){if(start<end){//之前经常纠结为什么要start<end,而不是<=,后来才明白过来,//当为=时,就只有一个元素还排什么序啊,int middle=getMiddle(arr,start,end);sort(arr,start,middle-1);sort(arr,middle+1,end);}}/** * 下面的就是要找出每次快排的分割位置,之后就可以进行分治操作了 */public static int getMiddle(int[] arr,int start,int end){int temp=arr[start];while(start<end){while(start<end && arr[end]>=temp){end--;}arr[start]=arr[end];while(start<end && arr[start]<=temp){start++;}arr[end]=arr[start];}arr[start]=temp;return start;}}


0 0
原创粉丝点击