快速排序

来源:互联网 发布:sql怎么删除联合主键 编辑:程序博客网 时间:2024/06/04 00:32

基本思想:基于分治法,获得一个数组的中间位置,位置一边全部大于中间值,另一边全部小于中间值,然后再对左边以及右边排序,直到两个连续的位置为止

与归并的区别在于快排需要先通过确认中间位置,而归并只要全部平分,快排是是自上而下排序,归并是自下而上排序

package com.mercurylake.test;public class TQuick {public static void main(String args[]){int[] arr={6,2,4,8,9,6,7,5,10};sort(arr, 0, arr.length-1);for(int i=0;i<arr.length;i++){System.out.print(arr[i]);}}public static void sort(int[] a,int begin,int end){if(begin<end){int middle=confirmMiddle(a,begin,end);sort(a,begin,middle);sort(a,middle+1,end);}}public static int confirmMiddle(int[] a,int begin,int end){int temp=a[begin];while(begin<end){while(begin<end&&a[end]>=temp)end--;a[begin]=a[end];while(begin<end&&a[begin]<=temp)begin++;a[end]=a[begin];}a[begin]=temp;return begin;}}


0 0
原创粉丝点击