雞尾酒排序的 C++ 程式?


雞尾酒排序是一種氣泡排序的變種,它既是一種穩定的排序演算法,也是一種比較排序,又稱為雙向氣泡排序、雞尾酒搖晃排序、搖晃排序(也可以指一種選擇排序的變種)、漣漪排序、洗牌排序或穿梭排序。該演算法與氣泡排序的不同之處在於,每次遍歷列表時,它都會按兩個方向進行排序。

Input:53421
Output:12345

解釋 

在雞尾酒中,排序陣列將由未排序元素組成。每次遍歷列表時,雞尾酒排序都在兩個方向上進行。它使用氣泡排序技術對陣列進行排序,一次向前一趟向後。

例項

#include <iostream>
using namespace std;
int main() {
   int arr[] = { 5, 3, 4, 2, 1 };
   int m=5;
   int n, c;
   n=m;
   do {
      for (int i = 0; i < n - 1; i++) {
         if (arr[i] > arr[i + 1]) {
            arr[i] = arr[i] + arr[i + 1];
            arr[i + 1] = arr[i] - arr[i + 1];
            arr[i] = arr[i] - arr[i + 1];
         }
      }
      n = n - 1;
      for (int i=m-1, c = 0; i >= c; i--) {
         if(arr[i] < arr[i - 1]) {
            arr[i] = arr[i] + arr[i - 1];
            arr[i - 1] = arr[i] - arr[i - 1];
            arr[i] = arr[i] - arr[i - 1];
         }
      }
      c = c + 1;
   }
   while (n != 0 && c != 0);
   for (int i = 0; i < m; i++) {
      cout<< arr[i]<<"\t";
   }
}

更新日期:2019-08-19

250 次瀏覽

開啟您的 職業生涯

透過完成課程獲得認證

開始
廣告
© . All rights reserved.