使用for循环对字符串进行排序

时间:2018-10-09 17:50:07

标签: java sorting bubble-sort

我正在尝试使用两个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));
        }
    }
}

这是我到目前为止所拥有的。想法是它可以与任何列表一起使用。我一直遇到的主要问题是如何添加临时字符串以将数据保留在ij中。

2 个答案:

答案 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