Java算法-扑克牌排列

/**
 * 下面代码模拟了一套扑克牌(初始排序A~K,共13张)的操作过程。
 *
 * 操作过程是: 手里拿着这套扑克牌,从前面拿一张放在后面,再从前面拿一张放桌子上,再从前面拿一张放在后面,....
 *
 * 如此循环操作,直到剩下最后一张牌也放在桌子上。 下面代码的目的就是为了求出最后桌上的牌的顺序。 初始的排列如果是A,2,3...K,则最后桌上的顺序为:
 * [2, 4, 6, 8, 10, Q, A, 5, 9, K, 7, 3, J] 请分析代码逻辑,并推测划线处的代码。
 *
 */
public class 扑克牌排列 {
    public static List moveCard(List src) {
        if (src == null) {
            return null;
        }
        List dst = new Vector();
        for (;;) {
            if (src.size() == 0) {
                break;
            }
            src.add(src.remove(0));
            dst.add(src.remove(0));
        }
        return dst;
    }

    public static void main(String[] args) {
        List a = new Vector();
        //Arrays.asList():返回一个受指定数组支持的固定大小的列表。(对返回列表的更改会“直接写”到数组。)
        a.addAll(Arrays.asList("A", "2", "3", "4", "5", "6", "7", "8", "9","10", "J", "Q", "K"));

        System.out.println(moveCard(a));
    }
}
时间: 2024-10-07 05:50:44

Java算法-扑克牌排列的相关文章

Java算法快速排序

快速排序的原理:每次将序列以一个值为界限分成两组,在将两个序列分别以一个界限分成两组这样一直分下去. int[] a = {11,222,44,63,84,11,24,53,123,25,98,76,34}; 第一步:以34将数组a分成两组  11, 25, 24, 11              34,  63, 44, 53, 123, 222, 98, 76, 84 第二步:以11将11, 25, 24, 11分为两组  11, 11,     24, 25.以84将34,  63, 44

java中的排列组合

? 1 使用之前需要声明一个Combine的对象,调用startCombile方法,可返回想要的组合数或者个数,参数介绍很重要 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 <br> public class Combine {     p

java算法 蓝桥杯 格子位置

问题描述 输入三个自然数N,i,j (1<=i<=N,1<=j<=N),输出在一个N*N格的棋盘中,与格子(i,j)同行.同列.同一对角线的所有格子的位置. 输入格式 输入共三行,分别输入自然数N,i,j.其中保证N<=24且1<=i<=N,1<=j<=N. 输出格式 输出共四行.第一行为与格子(i,j)同行的所有格子的位置,第二行为与格子(i,j)同列的所有格子的位置,第三行为从左上到右下对角线上的格子的位置,第四行为从左下到右上对角线上的格子的位置

趣味Java算法题(附答案)

[程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? //这是一个菲波拉契数列问题 public class lianxi01 { public static void main(String[] args) { System.out.println("第1个月的兔子对数:    1"); System.out.println("第2个月的兔子对数:    1"

java算法 蓝桥杯 扶老奶奶街

一共有5个红领巾,编号分别为A.B.C.D.E,老奶奶被他们其中一个扶过了马路. 五个红领巾各自说话: A :我和E都没有扶老奶奶 B :老奶奶是被C和E其中一个扶过大街的 C :老奶奶是被我和D其中一个扶过大街的 D :B和C都没有扶老奶奶过街 E :我没有扶老奶奶 已知五个红领巾中有且只有2个人说的是真话,请问是谁扶这老奶奶过了街? 若有多个答案,在一行中输出,编号之间用空格隔开. 例如 A B C D E(这显然不是正确答案) 代码:: package 蓝桥杯java算法训练; publi

java算法插入排序优化代码

原文:java算法插入排序优化代码 代码下载地址:http://www.zuidaima.com/share/1550463280630784.htm 一个细节让插入排序更具效率 运行此方法需要为main方法传递参数 package com.zuidaima.sort; /** *@author www.zuidaima.com **/ public class TestSort { public static void main(String args[]){ int l = args.len

java 算法基础

1.算法概要 算法是用于计算.数据处理和自动推理使用的.算法主要是做精确计算和表示一个有限长列的有效方法.算法一般包含清晰定义的指令用于计算函数.基本上也属于一种思考最简洁的方式. 2.算法特征 算法主要包含五个特征 2.1.有穷性: 是指算法必须能在执行有限个步骤后终止: 2.2.确切性: 算法的每一个步骤必须有确切的定义: 2.3.输入项: 一个算法输入有0或多个输入,以刻画预算对象的初始情况,所谓0就是初始化条件: 2.4.输出项: 反馈对数据加工后的结果.没有输出的算法无意义. 2.5.

JAVA算法基础-贪心算法

前言 学无止境.算法博大精深啊,一个贪心算法里面就隐含了这么多不同的场景实现,每个场景下的算法就有多种不同的实现,个人写法不一也成就了各种不同的漂亮算法,看了这些实现,也让我开拓了思维,这个世界的方案永远没有最完美的只有最合适的- ! 1.贪心算法概念 贪心算法也叫贪婪算法,当然叫法随意.主要目的是在问题求解时,做出最正确的判断= =,这不是贪心是啥?在计算机工程领域当中,就是说不考虑整体最优算法而是从局部做到最优解.当然贪心是算法不能对所有的问题都能得到整体都最优解,但对多数个问题还是能得到近

史上最全的随机数生成java算法

原文:史上最全的随机数生成java算法 源代码下载地址:http://www.zuidaima.com/share/1585762703215616.htm 前段时间有其他牛人分享的随机数激起了我分享随机数的想法 java随机字符补充版 [maven+junit] java生成指定为位数的随机密码 我分享一个最全的随机数的生成算法,最代码的找回密码的随机数就是用的这个方法: 1 String password = RandomUtil.generateString(10); 源码如下: pack