【问题标题】:Selection sort on my array list of objects not working JAVA对我的对象数组列表进行选择排序不起作用 JAVA
【发布时间】:2018-06-25 20:08:34
【问题描述】:

我的排序算法有问题,它对前两张卡片进行了排序,但随后就搞砸了。 Array 列表是deck 的一个属性,所以我必须使用deck 类中的方法来访问它,例如get card 和get deck。这是我的代码:

for (int i = 0; i < 4; i++) {                                       
    minVal = deck.getCard(i).getVal();                              
        for (int j = i ; j < 5 ; j++ ) {

            if (deck.getCard(j).getVal() < minVal)                  
            {

                minVal = deck.getCard(j).getVal();                  

                for (int k = i ; k < 5 ; k++) {
                    if (deck.getCard(k).getVal() == minVal)         
                    { 

                        buffer = deck.getCard(i);                   
                        deck.set(i, deck.getCard(k));               
                        deck.set(i + 1, buffer);
                    }
                }
            }
        }
    }

这是我的输出:

Original Cards:    
3
2
14
8
6
Updated cards:
2   
3
6
6
8

【问题讨论】:

标签: java selection-sort


【解决方案1】:
int temp;
for (int i = 0; i < getCard(i).length(); i++) {
    for (int j = 1 ; j < getCard(i).length() ; j++ ) {
        if (deck.getCard(j-1).getVal() < deck.getCard(j).getVal()) {
            temp = deck.getCard(j-1).getVal();
            deck.getCard(j-1).getVal() = deck.getCard(j).getVal();
            deck.getCard(j).getVal() = temp;
        }
    }
}

【讨论】:

  • 如果迭代中没有交换,至少打破它。此外,最好提供一些 cmets,而不是在没有解释的情况下抛出一堆代码。
  • 也许解释你的答案而不是仅仅转储代码?这样,OP(和其他人)实际上可以从中学习......
猜你喜欢
  • 1970-01-01
  • 2021-12-20
  • 2022-01-03
  • 2021-09-03
  • 2019-06-09
  • 1970-01-01
  • 2018-10-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多