交换排序-快速排序

来源:互联网 发布:淘宝装修视频代码 编辑:程序博客网 时间:2024/05/01 10:44

快速排序的JAVA实现

//快速排序的递归实现形式public class QuickSort {    public  byte[] quick(byte[] by) {        if(by.length>0){            quickSort(by,0,by.length-1);        }        return by;    }    private  void quickSort(byte[] by, int low, int high) {        if(low<high){ //如果不加这个判断递归会无法退出导致堆栈溢出异常            int middle = getMiddle(by,low,high);            quickSort(by, 0, middle-1);//小于基数的排序            quickSort(by, middle+1, high);//大于基数的排序        }    }    private  int getMiddle(byte[] by, int low, int high) {        int temp = by[low];//基准元素        while(low<high){            //找到比基准元素小的元素位置            while(low<high && by[high]>=temp){                high--;//从右往左找            }            by[low] = by[high];//如果找到,就把找到小于基数的值赋给基数所在的位置?             //找到比基准元素大的元素位置            while(low<high && by[low]<=temp){                low++;//从左往右找            }            by[high] = by[low];//如果找到,就把大于基数的值赋给        }        by[low] = (byte) temp;//low最后的位置,决定了小于low的位置上的数据都小于temp,        //大于low的位置上的数据都大于temp,因此下一次递归判断,只需对low左右两边的子数组进行相同思路的判断即可        return low;    }}
0 0
原创粉丝点击