洗牌与排序
来源:互联网 发布:常见公钥算法 编辑:程序博客网 时间:2024/05/21 01:47
import java.util.Random;public class PlayCardsTest {public static void main(String[] args) {PlayCardsTest test = new PlayCardsTest();String[] allCards = test.initCards();test.dealCards(allCards);test.printCards(allCards);System.out.println();test.sort(allCards);test.printCards(allCards);}/** * 洗牌,随机两张牌,再交换 * * @param allCards */public void dealCards(String[] allCards) {Random random = new Random();String temp;for (int i = 0; i < 100; i++) {int n = random.nextInt(54);int m = random.nextInt(54);temp = allCards[n];allCards[n] = allCards[m];allCards[m] = temp;}}/** * 排序,不计花色 * * @param allCards */public void sort(String[] allCards) {String tempCard;for (int i = 0, size = allCards.length; i < size - 1; i++) {int index = i; // 假设index处是最小的for (int j = i + 1; j < size; j++) {// 查找最小记录的位置if (isSmall(allCards[j], allCards[index])) {index = j;}}if (index != i) { // 若第一个元素不是最小元素,则进行交换tempCard = allCards[i];allCards[i] = allCards[index];allCards[index] = tempCard;}}}/** * a牌小于b牌吗? * * @param a * @param b * @return */private boolean isSmall(String a, String b) {String numA, numB;if (a.length() == 2) {if (a.equals("小王")) {numA = "14";} else {numA = "15";}} else {numA = a.substring(2, a.length());}if (b.length() == 2) {if (b.equals("小王")) {numB = "14";} else {numB = "15";}} else {numB = b.substring(2, b.length());}if (numA.equals("A")) {numA = "1";}if (numA.equals("J")) {numA = "11";}if (numA.equals("Q")) {numA = "12";}if (numA.equals("K")) {numA = "13";}if (numB.equals("A")) {numB = "1";}if (numB.equals("J")) {numB = "11";}if (numB.equals("Q")) {numB = "12";}if (numB.equals("K")) {numB = "13";}return (Integer.parseInt(numA) - Integer.parseInt(numB)) < 0 ? true: false;}/** * 初始化扑克牌 * * @return 扑克牌数组 */private String[] initCards() {String[] allCards = new String[54];String[] numCards = new String[] { "A", "2", "3", "4", "5", "6", "7","8", "9", "10", "J", "Q", "K" };for (int i = 0; i < 13; i++) {String[] initCard = get4Cards(numCards[i]);for (int j = 0; j < 4; j++) {allCards[i * 4 + j] = initCard[j];}}allCards[52] = "小王";allCards[53] = "大王";return allCards;}/** * 添加 红桃、方片、梅花、黑桃 信息 * * @param card * @return */private String[] get4Cards(String card) {return new String[] { "红桃" + card, "方块" + card, "梅花" + card,"黑桃" + card };}private void printCards(String[] allCards) {for (int i = 0, size = allCards.length; i < size; i++) {System.out.print(allCards[i]);if ((i + 1) % 16 == 0) {System.out.print(",");System.out.println();continue;}if (i != size - 1) {System.out.print(",");}}}}运行结果:
红桃5,红桃J,方块K,方块3,黑桃7,方块A,黑桃5,梅花Q,黑桃3,梅花A,黑桃10,红桃4,红桃8,红桃10,梅花10,方块Q,红桃A,黑桃8,方块7,方块4,梅花6,方块2,方块6,黑桃Q,方块9,梅花K,黑桃K,红桃3,梅花9,梅花4,梅花5,黑桃2,方块5,梅花7,红桃7,红桃K,大王,黑桃J,红桃Q,方块10,方块8,梅花3,梅花J,黑桃A,小王,梅花2,方块J,红桃9,黑桃9,黑桃6,红桃2,红桃6,梅花8,黑桃4方块A,梅花A,红桃A,黑桃A,方块2,黑桃2,梅花2,红桃2,黑桃3,红桃3,梅花3,方块3,方块4,梅花4,红桃4,黑桃4,梅花5,红桃5,方块5,黑桃5,梅花6,方块6,黑桃6,红桃6,方块7,梅花7,红桃7,黑桃7,黑桃8,方块8,红桃8,梅花8,方块9,红桃9,黑桃9,梅花9,方块10,红桃10,黑桃10,梅花10,黑桃J,梅花J,方块J,红桃J,红桃Q,梅花Q,黑桃Q,方块Q,黑桃K,方块K,红桃K,梅花K,小王,大王
0 0
- 洗牌与排序
- 洗牌算法与重新排序
- 扑克牌洗牌排序
- js数组排序(+洗牌)
- 扑克牌创建与洗牌
- 斗地主洗牌+发牌+排序
- 数组随机打乱洗牌排序
- java 发牌洗牌 重新排序
- 扑克牌生成与洗牌程序
- 信息与随机性洗牌作业
- 洗牌
- 洗牌
- 洗牌
- 洗牌
- 洗牌
- 洗牌
- 洗牌
- 洗牌
- 页面加载时执行js的几种方法
- OpenDaylight Lithium 在ubunbtu下的安装
- 密码 pasuwado题解
- PHP安装扩展mcrypt以及相关依赖项 【PHP安装PECL扩展的方法】
- 在nginx配置部分https
- 洗牌与排序
- jquery-chosen 选择框插件
- 省市二级联动
- IOS百度地图
- shell与bash
- transitionFromViewController方法的使用--优化
- Hexagon处理器的指令编码
- 【烙铁使用规范】—— 延长无铅手工焊接工艺中烙铁头的寿命
- android源码开发之监听来电状态