我对列表等非常陌生,目前正在尝试学习它们。 我使用它们编写了一个程序,并且一切运转良好,直到我没有对列表中的数字进行排序。现在,每当我到达代码的这一部分时,它就停止工作:
if ((st.get(i))>(st.get(k))) {
int temp=st.get(k);
st.add(k,st.get(i));
st.add(i,temp);
}
您能帮我解决我做错了什么以及如何解决吗?
答案 0 :(得分:0)
您的问题描述“刚刚停止工作”有点含糊。我假设您没有得到异常,而只是得到了错误的输出。代码(此部分)的问题在于,您不是交换列表中放错了位置的元素,而是在相应的索引处添加了这些元素的副本。而不是add(index, element)
,您应该使用set(index, element)
。
if (st.get(i) > st.get(k)) {
int temp = st.get(k);
st.set(k, st.get(i));
st.set(i, temp);
}
当然,排序功能的其余部分可能还存在其他问题。另外,如注释中所述,在实现自己的冒泡排序或选择排序或这是一个很棒的练习时,在所有实际应用中,您应该使用几种内置排序方法之一,例如Collections.sort
答案 1 :(得分:0)
如果您想使用Java 8,有一种简单的方法可以在整数列表中对num进行排序。这是众多示例之一。
public class Main {
public static void main(String[] args) {
List<Integer> nums = Arrays.asList(1, 4, 5, 29, 30, 11, 2, 6);
nums.sort(Comparator.naturalOrder());
System.out.println(nums);
}
}