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 {
public static void main(String[] args) {
//假定:b-->蓝色,w-->白色,r-->红色
char[] data = new char[]{'a','w','r','b','b','r','w'};
System.out.println(new String(paixu(data)));
}
/**
* 排序
* @param data char数组
* @return char[]
*/
private static char[] paixu(char[] data){
int startIndex = 0;
int moveIndex = 0;
int endIndex = data.length-1;
while(moveIndex <= endIndex){
if(data[moveIndex] == 'b'){
exchangeIndex(data,startIndex,moveIndex);
startIndex ++;
}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;
}
}
相关推荐
java毕业设计——基于Misty1算法的加密软件(java)的实现(源代码+论文).zip java毕业设计——基于Misty1算法的加密软件(java)的实现(源代码+论文).zip java毕业设计——基于Misty1算法的加密软件(java)的实现(源代码+...
数据结构与算法分析——Java语言描述
数据结构与算法分析——java语言描述 pdf
零起点学算法34——继续求多项式:方法1:输入1个正整数n
首先,我们从标题和描述出发,"java算法——玩家扑克牌"表明我们需要创建一个扑克牌游戏,其中包含玩家和扑克牌的管理。扑克牌游戏通常涉及发牌、比较牌面大小等操作,因此我们需要对扑克牌进行定义和组织。 1. **...
数据结构与算法分析——Java语言描述(第二版)是普林斯顿大学Mark Allen Weiss的经典之作,但是网上很少能找到Java描述第二版的课后习题,连作者的个人主页也明确表示不提供课后习题,只能到出版商那里去索取,这个...
机器学习的数学理论及其算法研究——评《机器学习的数学理论》 机器学习是指计算机通过固有的规律性信息获得新的经验和知识,从而提升计算机的智能,达到像人类一样作出决策的目的。机器学习的数学理论是研究机器...
### 三色旗算法Java版详解 #### 一、算法背景及定义 三色旗算法是一种经典的排序算法,最初由著名的计算机科学家Edsger W. Dijkstra提出,并以荷兰国旗的颜色(红、白、蓝)作为命名依据。该算法旨在解决在一个...
文本比较算法Ⅰ——LD算法.doc
老鼠走迷宫,用数组跌打计算。 老鼠走迷宫,用数组跌打计算。
选择排序: 每次在“无序”队列中选择“最小值”,放在有序队列最后,并从无序队列中删除该值。
计算机算法引论——设计与分析技术.本书讲述计算机算法的各种设计策略,包括分治技术、贪心技术、动态规划技术回溯和分支限界技术等。介绍算法分析技术、算法的时间和空间复杂度分析方法;讨论各类经典的应用问题...
稀疏矩阵 * 每个非零元素及其对应的行下标和列下标构成一个三元组, * 稀疏矩阵中所有这样的三元构成一个以三元组为数据... * 链表结构存储——三元链表中每个结点的数据域由稀疏矩阵非零元的行号、列号和元素值组成