52张扑克牌排序算法
来源:互联网 发布:苹果内购 java服务端 编辑:程序博客网 时间:2024/04/30 17:14
算法要求:
- 生成一副扑克牌,并打乱顺序
- 对乱序的扑克牌文件进行排序
为了方便阅读,我们直接将扑克牌生成为人工可以识别的字符串,数字从2,3,4,5,6,7,8,9,10,J,Q,K,A,花式为♠,♣,♥,♦。代码如下:
上述算法中,首先生成一个顺序的扑克牌,再对扑克牌进行一个打乱——100次,随机两个扑克位置进行交换。注意:生成一副乱序的扑克牌算法有很多种,笔者可以想到的另外两种办法:直接生成一个乱序的序列,然后将此序列写入文件,请参照附注代码A;另一个方法是:生成一个顺序的序列,然后用随机算法写入文件,个人觉得这种算法最快,请参照附注代码B。
最后将生成好的扑克牌保存在文件Poker.txt中。然后针对这个文件进行排序:
以上的方法主要包括3个主要过程:
- 将扑克牌全部读取到列表list中。
- 对list进行排序。
- 将排序后的list写入新文件中。
在以上代码中包含一个神奇数字“100”,这个100的用途在于区分数字和花式的权重,玩过扑克的同学都知道,扑克牌的比较首先应该比较数字,在数字相同的情况下,再进行花式比较。这个地方的100实际上可以是任何大于等于4的数字,这个例子中只是为了Debug方便,所以将数字设置100,方便Debug而已,并无他意。另外一个神奇数字“15”,这个数字的用途是因为我们排序是从大到小进行排序,数字越大的顺序越前,所以在这个地方用15进去实际的数字再进行进行。
运行结果:Poker.txt文件
SortedPoker.txt文件
附注代码A:在写这快代码的时候遇到一个小问题值得注意,Next(min, max)中的min是可以包含的,但是max是不会包含的;例如Next(0, 15),那么最小返回0,最大返回15-1=14。
附注代码B:(推荐最佳算法)
- 52张扑克牌排序算法
- 13张扑克牌排序算法
- 13张扑克牌排序算法
- 52张扑克牌的洗牌算法
- 【算法】扑克牌52张,无重复洗牌算法
- 输出52张扑克牌
- 52张扑克牌分法
- 扑克牌8张朝上
- C#控制台实现52张扑克牌的分法
- 扑克牌移动 下面代码模拟了一套扑克牌(初始排序A~K,共13张)的操作过程。
- 给定N张扑克牌和一个随机函数,设计一个洗牌算法
- 给定N张扑克牌和一个随机函数,设计一个洗牌算法
- 给定N张扑克牌和一个随机函数,设计一个洗牌算法
- 给定N张扑克牌和一个随机函数,设计一个洗牌算法
- 给定N张扑克牌和一个随机函数,设计一个洗牌算法
- 给定N张扑克牌和一个随机函数,设计一个洗牌算法
- 【转自老张】排序算法稳定性
- java实现8张基础排序算法
- HDU DIY Contest 【动态规划专题训练】JSU_ACM_第二小组解题报告
- MC55 TCP 使用方法(转)
- C# 打印预览
- 在WM6.1上实现可以最小化的模式窗口
- MSP430学习小结2-程序主体结构安排及低功耗-转载
- 52张扑克牌排序算法
- itouch的“苹果皮”
- 公司上班第一天!让我装oracle数据库,以及svn版本控制器!
- Ubuntu10.04修复Grub2笔记
- xHTML+CSS与SEO
- 哈!他们的“自我修养” 穆穆-movno1
- VC++深入详解·chapter18·笔记
- 谁是你的职场导师? 穆利堂-movno1 第一财经周刊
- VC++深入详解·chapter20·笔记