数组循环所需的帮助 - java

时间:2013-04-18 18:32:51

标签: java arrays loops

对于这个赋值,我无法再次循环,找到随机数系列中的下一个最大元素。解决这个问题的一些输入会很棒。谢谢。

public static void main(String [] args){

    int[] array = randomIntArray (10);   
    sortArray (array);

}

  public static int randomInt (int low, int high){ // Create a serie of random numbers
    int x = 0;
    for (int i = 0; i < 10; i++){
        x = (int)(Math.random ()* (high - low) +low);

    }  
    return x;

}
public static int[] randomIntArray (int n) { // Size of array
    int[] a = new int [n];
    for (int i = 0; i <a.length; i++){
        a[i] = randomInt (-5, 15);
    }
    return a;
}

public static int indexOfMaxInRange (int[] a, int low , int high){

    int index = low;
    for (int i = low +1; i < high; i++){
        if (a[i] > a[index]){ // If the position of i is greater than index
            index = i; // then index will equal that position with the highest element
        }         
    }  
  return index;


}
public static int swapElement (int []a, int index , int i){
    int tmp =0;

  for(i = 0; i < (a.length); i++) {
    tmp = index;
     a[i]= a[tmp] ;
  } 
    return a[tmp] ;
}

public static void sortArray (int[] array){ //The sortArray calls the indexOfMaxInRange to get the index of the largest element, then uses swapElement to swap that index's position to position a[i].

    for (int b= 0; b <array.length; b++){ 
    System.out.println (array[b]+"\t"+ b); // Print out original list of random numbers
    }
    System.out.println ();

    for (int i = 0; i <array.length; i++){    
    int index = indexOfMaxInRange (array, 0, 10 );
    int sort = swapElement (array, index, 0);

    System.out.println (sort+"\t"+ i);      
    }

}

2 个答案:

答案 0 :(得分:0)

这看起来像是家庭作业,因为排序数组是由无数的库来处理的,所以我将尝试给出提示而不是完整答案。

你的randomInt函数的工作量比你需要的多10倍。这不会改变程序的行为,但这是浪费。

您的swapElement功能看起来不正常。您不需要返回任何内容,也不需要循环。只需交换位置“index”和“i”中的元素即可。也许把参数“a”和“b”或“pos1”和“pos2”称为不那么混乱。

在sortArray中,找到最大元素并将其放在位置0后,你需要继续前进并找到第二大元素并将其放在位置1,依此类推。你需要有一个循环。你几乎准备好了。提示:通过查找剩余的最大元素(即调用indexOfMaxInRange但将1作为起始位置),您可以找到第二大元素,在将最大的元素放入位置0之后。

答案 1 :(得分:0)

对最后3个方法所做的更改

public static int indexOfMaxInRange (int[] a, int low , int high){

    int index = low;
    for (int i = low +1; i < a.length; i++){
        if (a[i] > a[index]){ // If the position of i is greater than index
            index = i; // then index will equal that position with the highest element
        }         

    }  
  return index;


}
public static void swapElement (int []a, int index , int i){
    int pos2;        
    pos2 = index;
     a[i]= a[pos2];  

     System.out.println (a[i]+"\t"+ index);     
}

public static void sortArray (int[] array){ 
    for (int b= 0; b <array.length; b++){ 
    System.out.println (array[b]+"\t"+ b);
    } 
    System.out.println ("Number in order");     


    for (int i = 0; i <array.length-1; i++){    
    int index = indexOfMaxInRange (array, i, 10 );
    swapElement (array, index,i );
    }

}