JAVA快递排序(递归)

import java.util.ArrayList;
import java.util.List;

//用递归写一个快速排序的算法
public class Quick_sort {
    public static void main(String[] args) {
        int[] arr = {-1, -2, -6, 4, 0, 11, -20}; // 待排序的数组
        //因为数组的长度是固定的,现在将arr转换为ArrayList
        List<Integer> list = new ArrayList<Integer>();
        for(int i = 0; i < arr.length; i++) {
            list.add(arr[i]);
        }
        List<Integer> result = quick_sort(list);        //接收排序后的结果
        //result是一个List,现在遍历输出result中的元素
        for(Integer integer : result) {
            System.out.print(integer + " ,");
        }
    }

    public static List<Integer> quick_sort(List<Integer> list){
        if (list.size() < 2) {                    //递归终止条件
            return list;
        }
                                                                    //将需要排序的数组转换为ArrayList,然后传到qucik_sort函数中
        int pivot = list.get(0);                                              //定义一个基准元素
        List<Integer> less = new ArrayList<Integer>();                        //定义less,将小于pivot的元素放入其中
        List<Integer> great = new ArrayList<Integer>();                       //定义great,将大于pivot的元素放入其中
        for(int i = 1; i < list.size(); i++) {
            if (list.get(i) < pivot) {
                less.add(list.get(i));
            }else {
                great.add(list.get(i));
            }
        }
        //现在的less中的元素全部都小于pivot,而great中的元素全部都大于pivot,进行递归
        less = quick_sort(less);
        great = quick_sort(great);
        less.add(pivot);
        less.addAll(great);
        return less;
    }
}

你可能感兴趣的:(JAVA快递排序(递归))