我在SelectionSort中得到错误的输出

时间:2019-07-15 07:00:13

标签: java data-structures

我应该得到的输出为

{-10,6,7,13,20,80,90,100} 

但是我得到的输出为

{20,100,13,6,7,80,-10,90} 

在SelectionSort中。为什么我得到此输出?我该如何解决这个问题?

    public class x{
        public static void main(String args[]){
            int[] a= {20,13,6,7,80,-10,90,100};
            int i,j,c,largest;
            for(i=a.length-1;i>0;i--){
                largest=0;
                for(j=1;j<=(a.length-1);j++){
                    if(a[j]>a[largest]){
                        largest=j;
                    }

                }
                swap(a,largest,i);
            }
            for(c=0;c<a.length;c++)
                System.out.println(a[c]);
        }
        public static void swap(int[] arr, int a, int b){
            int temp;
            if(a==b){
                return;
            }
            temp=arr[a];
            arr[a]=arr[b];
            arr[b]=temp;
        }
    }

1 个答案:

答案 0 :(得分:1)

public class x{
        public static void main(String args[]){
            int[] a= {20,13,6,7,80,-10,90,100};
            int i,j,c,largest;
            for(i=a.length-1;i>=0;i--){
                largest=0;
                for(j=1;j<=i;j++){
                    if(a[j]>a[largest]){
                        largest=j;
                    }

                }
                swap(a,largest,i);
            }
            for(c=0;c<a.length;c++)
                System.out.println(a[c]);
        }
        public static void swap(int[] arr, int a, int b){
            int temp;
            if(a==b){
                return;
            }
            temp=arr[a];
            arr[a]=arr[b];
            arr[b]=temp;
        }
    }