使用交换方法在java中排序数组

时间:2016-08-19 07:56:44

标签: java arrays loops sorted

我的问题是,当我对列表进行排序时,它将使数组的最后一个元素出错,最后在数组的开头使用它。在我的例子中,它无法对最后一个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不合适。

1 个答案:

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