煎饼排序 发表于 2022-05-05 | 分类于 算法 , 递归 , 煎饼排序 | 煎饼排序 969.煎饼排序123456789101112131415161718192021222324252627282930313233343536373839404142class Solution {public: vector<int> res; vector<int> pancakeSort(vector<int>& arr) { int n=arr.size(); cakeSort(arr, n); return res; } void cakeSort(vector<int>& arr, int n){ //base case if(n==1) return; //寻找最大煎饼的索引 int maxCake=0; int maxCakeIndex=0; for(int i=0;i<n;i++){ if(arr[i]>maxCake){ maxCakeIndex=i; maxCake=arr[i]; } } //第一次翻转,将最大煎饼翻到最上面 reverse(arr, 0, maxCakeIndex); //记录此次翻转 res.push_back(maxCakeIndex+1); //第二次翻转,将最大煎饼翻到最下面 reverse(arr, 0, n-1); //记录此次翻转 res.push_back(n); //递归调用,翻转剩下的烧饼 cakeSort(arr, n-1); } //翻转数组arr[i...j]的元素 void reverse(vector<int>& arr, int i, int j){ while(i<j){ swap(arr[i], arr[j]); i++; j--; } }}; -------------本文结束 感谢阅读------------- 本文作者: HReina 本文链接: http://hreina.com/2022/05/05/%E7%85%8E%E9%A5%BC%E6%8E%92%E5%BA%8F/ 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!