java演算法之 三色棋

2021-09-02 10:56:19 字數 934 閱讀 9129

package demo;

* algorithm gossip: 三色棋

* 三色旗的問題最早由e.w.dijkstra所提出,他所使用的用語為dutch nation flag(dijkstra為荷蘭

* 人),而多數的作者則使用three-color flag來稱之。

* 假設有一條繩子,上面有紅、白、藍三種顏色的旗子,起初繩子上的旗子顏色並沒有順序,您

* 希望將之分類,並排列為藍、白、紅的順序,要如何移動次數才會最少,注意您只能在繩子上

* 進行這個動作,而且一次只能調換兩個旗子。

* @author gaoq

* @date 2015-5-13 下午10:55:36

public class sanseqi ;

system.out.println(new string(paixu(data)));

* 排序

* @param data char陣列

* @return char

private static char paixu(char data)else if(data[moveindex] == 'r'){

exchangeindex(data,endindex,moveindex);

endindex --;

moveindex ++;

return data;

* 獨臂交換法

* @param data char陣列

* @param idx1 下標1

* @param idx2 下標2

private static void exchangeindex(char data,int idx1,int idx2){

char temp = data[idx1];

data[idx1] = data[idx2];

data[idx2]=temp;

基礎演算法之三色旗 python

問題 假設有一條繩子,上面有紅,白,藍三種顏色的旗子,起初繩子上的旗子顏色並沒有順序,您希望將之分類,並排列為藍,白,紅的順序,要如何移動次數才會最少,注意您只能在繩子上進行這份動作,而且一次只能調換兩個色旗子。方法 一開始b,w指向0索引,r指向最後乙個索引 1 如果w指向藍色 則交換b和w指向的...

演算法練習 兩指標之三色排序

輸入乙個整型陣列,每個元素在0 2 之間,其中0,1,2分別代表紅 白 藍。現要求對陣列進行排序,相同顏色的在一起,而且按紅白藍順序先後排列。要求時間複雜度為 o n 最容易想到的是排序,比如快排,歸併,堆排等,但它們的時間複雜度為o nlogn 與題意不符。第二種想到的是計數排序,掃瞄一遍過去,分...

三色旗演算法

演算法描述 假設有一條繩子,上面有紅 白 藍三種顏色的旗子,起初繩子上的旗子顏色並沒有順序,您希望將之分類,並排列為藍 白 紅的順序,要如何移動次數才會最少,注意您只能在繩子上進行這個動作,而且一次只能調換兩個旗子。示意圖 解法 在一條繩子上移動,在程式中也就意味只能使用乙個陣列,而不使用其它的陣列...