快速排序

来源:互联网 发布:石家庄淘宝摄影基地 编辑:程序博客网 时间:2024/05/16 06:51
package quicksort;public class QStest {public int partition(int[] a,int low,int high)  //分割数组找到基准数的位置{int key=a[low],i=low,j=high;while(i<j)                   //当i==j时,说明找到基准数的位置{while(i<j && a[j]>=key)j--;if(i<j)a[i++]=a[j];          //使用覆盖//swap(a,i++,j);      //使用交换方式while(i<j && a[i]<=key)i++;if(i<j)a[j--]=a[i];//swap(a,i,j--);}a[i]=key;              //覆盖后在i位置上就将key插入就可以了return i;               //返回基准数的位置i}public void quicksort(int[] a,int low,int high){int dest=0;if(low<high){dest=partition(a,low,high);   //返回基准数的位置quicksort(a,low,dest-1);    //再对基准数位置左右的子数组进行递归,当low==high时,子数组就已经有序了quicksort(a,dest+1,high);   //所有子数组有序之后,就相当于整个数组(即原数组)就有序了}}public void swap(int[] a, int i, int j) {int temp=a[i];a[i]=a[j];a[j]=temp;}public void print(int[] arr){for(int i=0;i<arr.length;i++){if(i!=arr.length-1)System.out.print(arr[i]+" ");elseSystem.out.println(arr[i]);}}public static void main(String[] args){int[] arr={24,65,70,44,43,98};QStest qs=new QStest();qs.quicksort(arr, 0, arr.length-1);qs.print(arr);}}

原创粉丝点击