为什么这个数组不能正常工作

时间:2016-10-04 14:19:32

标签: java arrays sorting methods

我将在此方法中降序编号整数

package sortarray;

public class start {

    public static void main(String[] args) {

        int [] numb={10,12,8,6,2};

        sortarray(numb);
    }

    public static void sortarray(int [] input){

        int max=input[0];

        int [] sortmax=input;//i don't know how this array sortmax initialized first

        for (int i=0;i<input.length;i++)
            if(max<input[i]){
                max=input[i];

                sortmax[i]=max;//this array is not work 
            }

        for (int j=0;j<sortmax.length;j++)
            System.out.print(" "+sortmax[j]);
    }           

}

但是对于这种方法,(sortmax)不起作用?

2 个答案:

答案 0 :(得分:1)

我知道你想保留某种历史记录吗?

sortmax只是引用您的输入数组,您在sortmax input上所做的一切。你需要这样做:

int[] sortmax = new int[input.length];

而不是int[] sortmax = input;

答案 1 :(得分:0)

你可以随时使用Arrays.sort(),但如果目标是学习排序,那么蛮力(大型载体的速度慢)分拣机可能如下所示:

public void sort(int[] array){
   int[] tempArray = new int[array.length]
   int max;
   int index;
   for(int k = 0; k < array.length; k++){
     for(int i = 0; i < array.length; i++){
       if(max < array[i]){
         max = array[i];
         index = i;
        }
     }
     tempArray[k] = array[index];
     array[index] = Integer.MIN_VALUE;
   }
   array = tempArray;
}
相关问题