我正在编写一个程序来安排数组中的元素,其中max位于最后,然后随着它们在数组中向后移动而减小。我可以用最小的首先安排它们等等但是我想知道我是否可以做相反的事情。下面是我的代码。它在第一次迭代之后不起作用。任何人都可以帮助我。
import java.util.Scanner;//Importing scanner class.
import java.util.Arrays;//Importing the array class.
{
public static void main(String[] args)
{
double [] numbers= {5,3,6,4,1};
double currentMax;
int currentMaxIndex;
int i,j,k;
// Scanner input = new Scanner(System.in);//Creating a scanner.
//The below lines are used to ask the user to enter 10 numbers.
/* for (k = 0;k<numbers.length;k++)
{
System.out.print("Enter number " + k +" : ");
numbers[k]=input.nextDouble();
}//end of for loop.
*/
for(i=numbers.length-1;i>1;i--)
{
currentMax=numbers[i];
currentMaxIndex=i;
for(j=numbers.length-2;j>0;j--)
{
if(currentMax<numbers[j])
{currentMax=numbers[j];
currentMaxIndex=j;
}
}
if(currentMaxIndex!=i)
{
numbers[currentMaxIndex]=numbers[i];
numbers[i]=currentMax;
}
}
System.out.print("The sorted new array is:\n");
for(i=0;i<numbers.length;i++)
{
System.out.print(numbers[i]+" ");
}
}
}
答案 0 :(得分:0)
虽然它没有直接回答你的问题,但确实提供了一种合理的替代方法。
按如下方式重构您的代码:
第1步:删除所有代码
第2步:改为输入:
Arrays.sort(numbers);
答案 1 :(得分:0)
显然有更好的排序方法,但我认为这应该可以修复你的代码:
外部循环应该检查i >= 1
和j >= 0
的内部循环。