首页 > 代码库 > 由玩扑克牌所想到的

由玩扑克牌所想到的

晚上一直在复习数据结构,看排序这部分内容,边看边理解,直到看到了这张ppt,觉得很有意思,写出来给大家一起分享。

技术分享

理解到这里时,我眼光发亮,还是这么一回事哦。

回忆小时候,没事情总是和小伙伴们一起打扑克牌。有时候,发牌人发一张,我捡起来按照大小顺序,往手里插入一张。最后发完了,我也就把牌理好了。

这个情况在数据结构里的排序是叫做插入排序法。

 

但也有些时候,是等小伙伴们全部发好了之后。我一次性理好的。具体操作如下。

左手拿着叠在一起的牌(未排序),然后慢慢的打开。从中找,看有没有王,有没有2,有没有A,有没有K……。如果有的话,就用右手从中抽出来。一直到左手里的牌全部抽到右手中。这样也可以完成排序。

那么这个排序叫什么呢??选择排序?其实也不完全是选择排序。至少跟课本里的选择排序不一样。

课本里的选择排序,是从一堆数中,选择最小的跟第一位数交换。然后再选第二小的跟第2个数交换。这里主要是交换。

而我小时候洗牌因为有两只手,所以就不是交换,而是把左手里的牌,选入右手中。

相当于又开辟了一个新的空间。实际上,本质的说,这也是一种选择排序。

---------------------------------------------------------

现实中的打牌也用到了很多数据结构的理论知识。

除了洗牌用到了排序。接牌用到了查找外。

还有算牌。应该用到了概率的东西吧。如果跟一个人打牌打多了,还可能用到了人工智能算法。

------------------------------------------------------------

哈哈,感觉如果有时间精力的话,可以去写一个可以自动打牌的软件,也去玩玩人工智能打扑克牌。。哈哈哈哈

 

由玩扑克牌所想到的