我的问题是,当我对列表进行排序时,它将使数组的最后一个元素出错,最后在数组的开头使用它。在我的例子中,它无法对最后一个9的元素进行排序,最后在小数字(例如0和1)之前打印。这是我的代码:
public class ty {
public static void main(String[]argus){
int []numbers={45,23,34,545,56,23,4,1,66,0,9};
int j;
for( int i=0;i<numbers.length;i+=1){
int first=0;
for(j=0;j<=i;j+=1){
if(numbers[j]>=first){
first=numbers[j];
numbers[j]=numbers[i];
numbers[i]=first;}
}//inner loop
}//first loop
for(int i=0;i<numbers.length;i+=1){
System.out.print(numbers[i]+" ");}
}
}
//输出为9 0 1 4 23 23 34 45 56 66 545
正如你所看到的那样,它们是有序的,除了开头的9不合适。
答案 0 :(得分:0)
logical error
导致输出错误。你在Selection sort
技术中有错误。这是如何做到的:
int []numbers={45,23,34,545,56,23,4,1,66,0,9};
for(int i=0; i<numbers.length-1; i+=1){
int m = i;
for(int j=i+1; j<numbers.length; j+=1){
if(numbers[m]>numbers[j])
m = j;
}
int temp = numbers[m];
numbers[m] = numbers[i];
numbers[i] = temp;
}
for(int i=0; i<numbers.length; i+=1)
System.out.print(numbers[i]+"\t");
这将正常工作并提供输出:
0 1 4 9 23 23 34 45 56 66 545