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 與題意不符。第二種想到的是計數排序,掃瞄一遍過去,分...
三色旗演算法
演算法描述 假設有一條繩子,上面有紅 白 藍三種顏色的旗子,起初繩子上的旗子顏色並沒有順序,您希望將之分類,並排列為藍 白 紅的順序,要如何移動次數才會最少,注意您只能在繩子上進行這個動作,而且一次只能調換兩個旗子。示意圖 解法 在一條繩子上移動,在程式中也就意味只能使用乙個陣列,而不使用其它的陣列...