对于这个赋值,我无法再次循环,找到随机数系列中的下一个最大元素。解决这个问题的一些输入会很棒。谢谢。
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);
}
}
答案 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 );
}
}