首页 > 编程语言 > 详细

快速排序java实现

时间:2021-03-30 13:09:56      阅读:22      评论:0      收藏:0      [点我收藏+]
public class QuickSort {
//基本思想为分治法,实现时采用挖坑填数+分治法,先从数列中取出一个数作为基准数,分区,将比这个数大的数放到它的右边,
//小于或等于它的数放到它的左边,对左右区间重复第二步,直到各区间只有一个数。在O(N*logN)的几种排序方法中效率较高
    public static void quickSort(int[] arr,int low,int high){
        int i,j,temp,t;
        if(low>high)//错误参数
            return;
        i=low;
        j=high;
        temp = arr[low];//temp是基准数,默认数组第一个元素,也有其他选择,比如中间数,随机选择等
        while (i<j) {
            while (temp<=arr[j]&&i<j)//从右向左找小于基准数的数来填坑
                j--;
            while (temp>=arr[i]&&i<j)//从左向右找大于或等于基准数的数来填坑
                i++;
            if (i<j) {//满足条件则交换
                t = arr[j];
                arr[j] = arr[i];
                arr[i] = t;
            }

        }  
        arr[low] = arr[i];//交换,填坑
        arr[i] = temp;
        quickSort(arr, low, j-1);//递归调用左半数组
        quickSort(arr, j+1, high);//递归调用右半数组
    }

    public static void main(String[] args){
        int[] arr = new int[]{10, 0, 5, 8, -1,-8, 10, 0};
        System.out.print("排序前数组:")
        for (int n :arr) 
            System.out.print(n + ",");
        quickSort(arr, 0, arr.length-1);
    System.out.print("排序后数组:")
        for (int n :arr) 
            System.out.print(n + ",");
    }
}

 

快速排序java实现

原文:https://www.cnblogs.com/pycdu/p/14595900.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!