我正在尝试使用两个for循环按字母顺序对字符串列表进行排序。
具体来说,我不允许使用java.util.Collections.sort()
。
for(int i = 0; i < str.size(); i++)
{
for (int j = i+1; j < str.size(); j++)
{
if(str.get(i).compareTo(str.get(j))< 0)
{
String temp;
str.add(temp);
str.set(str.get(temp),str.get(i));
str.set(i, str.get(j));
}
}
}
这是我到目前为止所拥有的。想法是它可以与任何列表一起使用。我一直遇到的主要问题是如何添加临时字符串以将数据保留在i
和j
中。
答案 0 :(得分:3)
您不想将临时字符串添加到要排序的数组列表中-您应该使用它来交换两个值:
String temp = str.get(i);
str.set(i, str.get(j)); // this overwrites str.get(i),
// hence the need for temp
str.set(j, temp);
此外,您所做的并不是真正的冒泡排序:-)
Wikipedia上有关于最常见算法/问题的精彩文章,并且是从编程开始的好资源,例如https://en.wikipedia.org/wiki/Bubble_sort
欢迎来到编程界!
答案 1 :(得分:0)
这是代码。很高兴看到您来这里之前已经尝试过一些东西。还有其他比气泡排序更快的排序技术。请尝试尝试。
List<String> str = new ArrayList<>();
str.add("bbbb");
str.add("aaaa");
str.add("cccc");
for(int i = 0; i < str.size(); i++)
{
for (int j = i+1; j < str.size(); j++)
{
if(str.get(i).compareTo(str.get(j))< 0)
{
String temp = str.get(i);
str.set(i, str.get(j));
str.set(j, temp);
}
}
}
System.out.println(str); //this will print cccc,bbbb,aaaa