Java泡种不检查最后一个循环

0

的问题

我试图进行排序。但是碰壁的时刻。 下面,我有一个getId()功能检索id的一个成员。 我想要进行排序。会员身份证。 我已经检查了一个非洲濒危野生动物基金良好的文章和实施如下:

e.g(前排序) 11 22 33 44 55 66 77 88 99 00

e.g(后排序) 00 11 22 33 44 55 66 77 88 99

Member temp;

for (int i = 0; i < members.size(); i++) {
    Member s = members.get(i);
    System.out.println("S: "+s.getId());
            
    for (int j=0; j < members.size()-1; j++) {
        Member t = members.get(j+1);
        System.out.println("T: "+t.getId());
                
        if (s.getId() > t.getId()) {
        temp = s;
        s = t;
        t = temp;
        }
     }
  }
}

我没有打印的发言以上的跟踪的根本原因,但仍然试图找出错误。

bubble-sort java
2021-11-24 04:07:41
1

最好的答案

2

代码,用于交换,是错误的:

if (s.getId() > t.getId()) {
   temp = s;
   s = t;
   t = temp;
}

在这里,你只交换 st但数据基础 members 不会受到影响。 正确的:

for (int i = 0; i < members.size() - 1; i++) {
     for (int j = 0; j < members.size() - i - 1; j++) {
         Member s = members.get(j);
         Member t = members.get(j+1);
         if (s.getId() > t.getId()) {
             Collections.swap(members, j, j+1);
         }
    }
}
2021-11-24 04:35:16

谢谢你为指针。 我认为我到达那里。 我使用s=的学生。设置(i,t);以及其似乎更新,但条件使得它更新所有价值观为1010代替。
Enthu

啊,我看到,我们可以使用收集。交换我不知道。 你能解释一下多一点的成员。大小()-1和成员。大小()-i-1。 不是的条件相同的一个发布或我的失踪?
Enthu

@葡萄酒,事先取消黄我怕你有一些误解的泡沫进行排序。 比较和交换 只有 生之间的相邻的单元。
chenzhongpu

谢谢你@chenzhongpu. 我会了解更多关于这一点。 谢谢你的帮助! 它是真正有助于我。
Enthu

其他语言

此页面有其他语言版本

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................