快速排序之分割数组

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

public class Permutation {
    public static void main(String[] args){
        int nums[] = {12, 2, 3,9,1,15,4,20,10,-1};
        boolean isUsed[] = new boolean[nums.length];
        List<Integer> result = new ArrayList<Integer>(); 
        List<List<Integer>> resultList = new ArrayList<List<Integer>>();
//      doPermute(nums, isUsed, result, resultList);
//      System.out.println(resultList.toString());
        Object[] aa = result.toArray();
        // result.toArray(a)
        recMergeSort(nums, 0, nums.length-1);
    }
    public static void doPermute(int[] nums, boolean[] isUsed, List<Integer> result, List<List<Integer>> resultList){
        if(result.size()==nums.length){
            resultList.add(new ArrayList<>(result));
            return;
        }

        for(int i = 0;i<nums.length;i++){
            if(!isUsed[i]){
                result.add(nums[i]);
                isUsed[i] = true;
                doPermute(nums, isUsed, result, resultList);
                result.remove(result.size()-1);
                isUsed[i] = false;
            }
        }
    }
    static int j =0;
    public static void recMergeSort(int[] arr, int low, int upper){
        List<Integer> list = new ArrayList<Integer>();
        for(int i =low;i<=upper;i++){
            list.add(arr[i]);
        }
//      System.out.println("sub array: "+Arrays.asList(arr));
        System.out.println("sub array: "+(j++)+" "+list);
        if(low == upper){
            return;
        }
        else{
            int mid = (low + upper)/2;
            recMergeSort(arr, low, mid);
            recMergeSort(arr, mid+1, upper);

        }
    }

}

运行结果如下:

sub array: 0 [12, 2, 3, 9, 1, 15, 4, 20, 10, -1]
sub array: 1 [12, 2, 3, 9, 1]
sub array: 2 [12, 2, 3]
sub array: 3 [12, 2]
sub array: 4 [12]
sub array: 5 [2]
sub array: 6 [3]
sub array: 7 [9, 1]
sub array: 8 [9]
sub array: 9 [1]
sub array: 10 [15, 4, 20, 10, -1]
sub array: 11 [15, 4, 20]
sub array: 12 [15, 4]
sub array: 13 [15]
sub array: 14 [4]
sub array: 15 [20]
sub array: 16 [10, -1]
sub array: 17 [10]
sub array: 18 [-1]

猜你喜欢

转载自blog.csdn.net/jjf09/article/details/77728401