码迷,mamicode.com
首页 > 编程语言 > 详细

递归实现煎饼排序

时间:2020-04-06 00:25:25      阅读:65      评论:0      收藏:0      [点我收藏+]

标签:temp   art   add   string   --   返回   选择   bsp   util   

给定数组 A,我们可以对其进行煎饼翻转:我们选择一些正整数 k <= A.length,然后反转 A 的前 k 个元素的顺序。我们要执行零次或多次煎饼翻转(按顺序一次接一次地进行)以完成对数组 A 的排序。

 1 /*
 2 * https://leetcode-cn.com/problems/pancake-sorting/
 3 * 
 4 * 给定数组 A,我们可以对其进行煎饼翻转:我们选择一些正整数 k <= A.length,然后反转 A 的前 k 个元素的顺序。
 5 * 我们要执行零次或多次煎饼翻转(按顺序一次接一次地进行)以完成对数组 A 的排序。
 6 * 返回能使 A 排序的煎饼翻转操作所对应的 k 值序列。任何将数组排序且翻转次数在 10 * A.length 范围内的有效答案都将被判断为正确。
 7 */
 8 import java.util.ArrayList;
 9 import java.util.List;
10 
11 public class code969_PancakeSorting
12 {
13     List<Integer> res = new ArrayList<>();
14     public List<Integer> pancakeSort(int[] A) {
15         sort(A, A.length);
16         System.out.println(res);
17         return res;
18     }
19     public void sort(int[] nums, int n){
20         if(n == 1)
21             return;
22         int maxNum = 0;
23         int maxNumIndex = 0;
24         for(int i = 0; i < n; i++){
25             if(nums[i] > maxNum){
26                 maxNum = nums[i];
27                 maxNumIndex = i;
28             }
29         }
30         reverse(nums, 0, maxNumIndex);
31         res.add(maxNumIndex + 1);
32         reverse(nums, 0, n - 1);
33         res.add(n);
34         sort(nums, n - 1);
35     }
36     public void reverse(int[] nums, int start, int end){
37         while(start < end){
38             int temp = nums[start];
39             nums[start++] = nums[end];
40             nums[end--] = temp;
41         }
42     }
43     public static void main(String[] args){
44         code969_PancakeSorting pancakeSorting = new code969_PancakeSorting();
45         pancakeSorting.pancakeSort(new int[]{3,2,4,1});
46         //4 2 3 1 3
47         //1 3 2 4 4
48         //3 1 2 4 2
49         //2 1 3 4 3
50         //2 1 3 4 1
51         //1 2 3 4 2
52     }
53 }

 

递归实现煎饼排序

标签:temp   art   add   string   --   返回   选择   bsp   util   

原文地址:https://www.cnblogs.com/Z-D-/p/12639909.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!