微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python冒泡排序对象数组

如何解决Python冒泡排序对象数组

我正在尝试在 Python 中为德州扑克游戏对卡片对象的“手”数组进行排序,其中卡片对象包含三个值:花色的字符串、值的字符串/整数和它们的整数检查直道时的“排名”。

class Card:
    def __init__(self,suit,val,rank):
        self.suit = suit
        self.value = val
        self.rank = rank

    def show(self):
        print("{} of {}s".format(self.value,self.suit))

我还为每个玩家设置了一个类,他们有一个包含两张牌的“口袋”和一张包含口袋和棋盘的七张手牌。

class Player:
    def __init__(self,name):
        self.pocket = []
        self.hand = []
        self.temp = []

要检查同花顺,我觉得我需要按等级对我的 self.hand 数组进行排序,这样我就可以轻松浏览花色/等级值,看看是否有那只神奇的手。由于它是一个如此小的数据集,我选择了冒泡排序,这是我通过

实现的
        self.hand.append(Card("Diamond",5,5))
        self.hand.append(Card("Spade","Ace",1))
        self.hand.append(Card("Diamond","Queen",12))
        self.hand.append(Card("Diamond",10,10))
        self.hand.append(Card("Diamond","King",13))
        self.hand.append(Card("Diamond",9,9))
        self.hand.append(Card("Diamond","Jack",11))

        for x in self.hand:
            self.temp.append(x.rank)

        n = len(self.temp)

        for i in range(n - 1):
            for j in range(0,n - i - 1):
                if(self.temp[j] > self.temp[j + 1]):
                    self.hand[j],self.hand[j + 1] = self.hand[j + 1],self.hand[j]
        
        for i in self.hand:
            i.show()

这个冒泡排序算法在另一个程序中处理一组整数,但是当我在这里显示手时,它仍然没有排序。没有错误消息。知道我哪里错了吗?

解决方法

您忘记交换 self.temp 中的值。只需将其添加到内部循环中即可:

self.temp[j],self.temp[j + 1] = self.temp[j + 1],self.temp[j]

另外,除非你想实现冒泡排序,否则你应该直接使用.sort()方法,这样会更优化

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?