快速排序之分割数组
来源:互联网 发布:三国志9最新优化伴侣 编辑:程序博客网 时间:2024/05/23 01:14
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]
阅读全文
0 0
- 快速排序之分割数组
- 数组集合之快速排序
- C# 快速分割数组
- 快速排序:分割。
- 快速排序 一般分割
- 快速分割排序
- 快速排序中的霍尔分割
- 快速排序一趟分割,单循环
- 实际快速排序 -分割策略
- 数组排序-快速排序
- 算法之--数组分割
- 10、C程序 数组排序之[快速排序法]
- 二维数组快速排序
- 数组实现快速排序
- JAVA数组快速排序
- iOS数组快速排序
- 数组快速排序,selecter
- int数组快速排序
- Add One Row to Tree
- 算法-二叉树遍历(递归和非递归)
- 数据结构排序
- 算法-01背包1
- 算法-01背包2
- 快速排序之分割数组
- ros_comm
- 算法学习-Bucket排序
- SQLServer--存储过程的分类
- 算法-求Factorial数列
- Palindromic Substrings
- 设计一个特殊的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作
- 编程测试-走路与打车所用时间最短
- bzoj 3262: 陌上花开(cdq分治)