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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

荷兰国旗

發(fā)布時(shí)間:2024/8/1 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 荷兰国旗 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
拿破侖席卷歐洲大陸之后,代表自由,平等,博愛的豎色三色旗也風(fēng)靡一時(shí)。荷蘭國(guó)旗就是一面三色旗(只不過是橫向的),自上而下為紅白藍(lán)三色。
該問題本身是關(guān)于三色球排序和分類的,由荷蘭科學(xué)家Dijkstra提出。由于問題中的三色小球有序排列后正好分為三類,Dijkstra就想象成他母國(guó)的國(guó)旗,
于是問題也就被命名為荷蘭旗問題(Dutch National Flag Problem)。

下面是問題的正規(guī)描述: 現(xiàn)有n個(gè)紅白藍(lán)三種不同顏色的小球,亂序排列在一起,請(qǐng)通過兩兩交換任意兩個(gè)球,使得從左至右,依次是一些紅球、一些白球、一些藍(lán)球。

參考july大神的教程,改寫成java版本

public static void swap(int nums[],int i,int j){if(i==j)return;nums[i]^=nums[j];nums[j]^=nums[i];nums[i]^=nums[j];}public static void sort(int nums[]){int current=0;int begin=0;int end=nums.length-1;while (current<end) {if(nums[current]==0){swap(nums, current, begin);current++;begin++;}if(nums[current]==1){current++;}if(nums[current]==2){swap(nums,current,end);end--;}}}public static void main(String[] args) {int nums[]={0,0,1,1,1,2,0,2,1,2};sort(nums);for (int i : nums) {System.out.print(i+",");}}

時(shí)間復(fù)雜度:O(n)

空間復(fù)雜度:O(1)


總結(jié)

以上是生活随笔為你收集整理的荷兰国旗的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。