首頁 > 後端開發 > C++ > 主體

一個煎餅排序問題?

王林
發布: 2023-09-07 22:41:23
轉載
677 人瀏覽過

一個煎餅排序問題?

這裡我們將看到另一個排序問題,名為煎餅排序。這個問題很簡單。我們有一個陣列。我們必須對此進行排序。但我們只能使用一種稱為 rev(arr, i) 的運算。這會將 arr 的元素從 0 反轉到第 i 個位置。

這個想法就像是選擇排序。我們反覆將最大元素放在末尾,以減少數組的大小。讓我們看看演算法來理解這個想法。

演算法

pancakeSort(arr, n)

Begin
   size := n
   while size > 1, do
      index := index of max element in arr from [0 to size – 1]
      rev(arr, index)
      rev(arr, size - 1)
      size := size - 1
   done
End
登入後複製

範例

#include<iostream>
using namespace std;
void rev(int arr[], int i) {
   int temp, st = 0;
   while (st < i) {
      temp = arr[st];
      arr[st] = arr[i];
      arr[i] = temp;
      st++;
      i--;
   }
}
int maxIndex(int arr[], int n) {
   int index, i;
   for (index = 0, i = 0; i < n; ++i){
      if (arr[i] > arr[index]) {
         index = i;
      }
   }
   return index;
}
int pancakeSort(int arr[], int n) {
   for (int size = n; size > 1; size--) {
      int index = maxIndex(arr, size);
      if (index != size-1) {
         rev(arr, index);
         rev(arr, size-1);
      }
   }
}
int main() {
   int arr[] = {54, 85, 52, 25, 98, 75, 25, 11, 68};
   int n = sizeof(arr)/sizeof(arr[0]);
   pancakeSort(arr, n);
   cout << "Sorted array: ";
   for (int i = 0; i < n; ++i)
   cout << arr[i] << " ";
}
登入後複製

輸出

Sorted array: 11 25 25 52 54 68 75 85 98
登入後複製

以上是一個煎餅排序問題?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:tutorialspoint.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!