public static int[] sortIntegers(int[] array) {
int n = array.length;
int temp = 0;
for (int k = 0; k < n - 2; k++) {
//controls how many passes is needed to sort the entire array
int test=0;
for (int i = 0; i < n - k - 1; i++) {
//controls the amount of swaps that is needed for each pass
//ascending order
if (array[i] > array[i + 1])
//swap array[i] and array[i+1]
temp = array[i];
array[i] = array[i + 1];
array[i + 1] = temp;
test=3;
}
if(test==0){
break;
}
}
return array;
}
public static void printArray(int[] array){
for(int i=0; i<=array.length-1; i++){
System.out.println("Element " + i + " is " + array[i]);
}
}
所以我试图按升序对数组进行排序,但似乎没有工作。另外我的课程出于某种原因说要创建一个新的sortedIntegers数组,但我不明白你为什么要这样做只需要改变传递的数组。我的朋友告诉我,创建一个新的数组是更简单的方法,但我觉得我没有得到什么......
答案 0 :(得分:3)
这些行:
if (array[i] > array[i + 1])
//swap array[i] and array[i+1]
temp = array[i];
array[i] = array[i + 1];
array[i + 1] = temp;
请勿交换array[i]
和array[i+1]
。它实际上只是将array[i]
分配给temp
。随后的两行无条件执行。
你需要围绕它们的大括号:
if (array[i] > array[i + 1]) {
//swap array[i] and array[i+1]
temp = array[i];
array[i] = array[i + 1];
array[i + 1] = temp;
}
答案 1 :(得分:0)
不要互换阵列[i]&#39;和&#39;数组[i + 1]&#39;。它实际上只是分配了数组[i]&#39;温度随后的两行无条件执行。
确保你的代码是这样的......在它们周围加上大括号。
if (array[i] > array[i + 1]) {
//swap array[i] and array[i+1]
temp = array[i];
array[i] = array[i + 1];
array[i + 1] = temp;
}