日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

荷兰红旗问题

發布時間:2023/12/18 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 荷兰红旗问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
設有一個僅由紅、白、藍三種顏色的條塊組成的條塊序列,請編寫一個時間復雜度為O(n)的算法,使得這些條塊按紅、白、藍的順序排好,即排成荷蘭國旗圖案。
1
#include <stdio.h> 2 #include <algorithm> 3 using namespace std; 4 5 typedef enum 6 { 7 RED, 8 WHITE, 9 BLUE 10 } color; //定義荷蘭國旗顏色枚舉數組 11 12 void flag_arrange(color sz[], int len) 13 { 14 // i以前全為紅色,k以后全為藍色,i和k中間 15 int i = 0, j = i, k = len - 1; 16 while (j <= k) 17 { 18 // 如果為紅色,則和i交換 19 if (sz[j] == RED) 20 swap(sz[i++], sz[j++]); 21 else if (sz[j] == BLUE) // 如果為藍色,則和k交換 22 swap(sz[k--], sz[j]); //這里沒有j++以防交換后仍為藍色的情況 23 else 24 j++; 25 } 26 } 27 int main() 28 { 29 // 定義一個荷蘭國旗數組 30 color a[] = {RED, WHITE, WHITE, BLUE, BLUE, RED, WHITE, BLUE, RED, RED, BLUE, WHITE}; 31 // 執行排序 32 flag_arrange(a, 12); 33 // 打印輸出排序結果 34 for (int i = 0; i < 12; i++) 35 printf("%d%c", a[i], i == 11 ? '\n' : ' '); 36 return 0; 37 }

?

轉載于:https://www.cnblogs.com/sqdtss/p/10738575.html

總結

以上是生活随笔為你收集整理的荷兰红旗问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。