这是我的代码,我无法弄清楚它为什么不起作用。这个算法必须对数组进行排序,但是当我运行它时,它会检索同一个数组。
import java.util.Arrays;
public class BubbleSorted1 {
public static void main(String[] args) {
int[] data = {40,20,50,30,10};
sort(data);
System.out.println(Arrays.toString(data));
}
public static void sort(int[] array){
for(int barrier = array.length-1; barrier >= 0; barrier--){
for(int index = 0; index < barrier; index++){
if(array[index] > array[index] + 1){
int tmp = array[index];
array[index] = array[index + 1];
array[index + 1] = tmp;
}
}
}
}
}
答案 0 :(得分:3)
你写array[index] > array[index] + 1
。这应该是array[index] > array[index + 1]
,因为你做的检查总是错误的。
答案 1 :(得分:2)
你这里有一个错字:
if(array[index] > array[index] + 1){
我认为你的意思是:
if(array[index] > array[index + 1]){
第一个条件永远不会成立,因为一个数字(数组的index
中包含的值)永远不会超过它本身加一个。
答案 2 :(得分:0)
试试这个..你唯一需要改变的是 IF 条件
public static void sort(int[] array){
for(int barrier = array.length-1; barrier >= 0; barrier--){
for(int index = 0; index < barrier; index++){
if(array[index] > array[index+1]){
int tmp = array[index];
array[index] = array[index + 1];
array[index + 1] = tmp;
}
}
}