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编程环境下,我们可以构建一个线性规划算法来解决这些问题。以下是关于线性规划算法实现的详细解释: 1. **线性规划模型**:线性规划问题通常由以下部分组成: - 目标函数:我们需要最大化或最小化的函数,...
java毕业设计——java基于蚁群算法路由选择可视化动态模拟系统的的设计与实现(论文+开题报告+翻译+外文翻译).zip java毕业设计——java基于蚁群算法路由选择可视化动态模拟系统的的设计与实现(论文+开题报告+翻译+...
本项目“Java开发的——网络、单机二合一——五子棋+源码”正是一个结合了网络对战和单机模式的五子棋游戏,其核心特点包括批处理调度运行、网络联机功能以及禁手和先手选择等策略性设置。 首先,让我们深入理解这...
数据结构与算法分析——java语言描述 pdf
数据结构与算法分析——Java语言描述.pdf
尤其引人注目的是"Katago",一个强大的五子棋AI系统,它不仅在传统黑白两色对弈的基础上,还引入了第三种颜色——红色棋子,从而演变为了“三色五子棋”。这个独特的设计,增加了游戏的复杂性和策略性,同时也为研究...
《数据结构与算法分析——Java语言描述》是一本深度探讨数据结构和算法的权威书籍,专为Java程序员设计。本书旨在帮助读者理解如何在实际编程中有效地使用数据结构和算法,提升程序性能和解决问题的能力。书中的内容...
数据结构与算法分析——Java语言描述(第二版)是普林斯顿大学Mark Allen Weiss的经典之作,但是网上很少能找到Java描述第二版的课后习题,连作者的个人主页也明确表示不提供课后习题,只能到出版商那里去索取,这个...
读书笔记:数据结构与算法分析——Java语言描述
* 冒泡排序: * 每次在无序队列里将相邻两个数一次进行比较, * 将小数调到前面,逐次比较,直至将最大的数移到 * 最后。将剩下的N-1个数继续比较,将次大数移至 * 倒数第二位。
本资料集是“数据结构与算法答案——java语言描述”,虽然全为英文内容,但其深入探讨了使用Java实现数据结构和算法的细节。 1. **数组**:数组是最基本的数据结构之一,它是一系列相同类型元素的集合,可以通过索...
### 三色旗算法Java版详解 #### 一、算法背景及定义 三色旗算法是一种经典的排序算法,最初由著名的计算机科学家Edsger W. Dijkstra提出,并以荷兰国旗的颜色(红、白、蓝)作为命名依据。该算法旨在解决在一个...
[0分共享] 数据结构与算法分析——Java语言描述
6. **编程实现**:实现这些算法通常使用Python、C++或Java等编程语言。代码会包含游戏逻辑、用户界面和AI决策模块。用户界面可以是命令行或图形界面,取决于项目的复杂度和目标。 7. **调试与优化**:在开发过程中...
汉诺塔——经典的递归 *实现移动函数 *递归实现汉诺塔函数