这是我们 Java 课程中的一个练习中的说明。首先,我想说我“做我的功课”,而且我不只是懒惰地要求 Stack Overflow 上的某个人为我回答这个问题。在所有其他练习中,这个特定项目一直是我的问题,因为我一直在努力为此寻找“完美算法”。
编写将输入 10 个整数值并按升序或降序显示的 JAVA 程序。注意:不允许使用 Arrays.sort()。
这是我想出的代码,它可以工作,但它有一个明显的缺陷。如果我输入相同的值两次或更多次,例如:
5, 5, 5, 4, 6, 7, 3, 2, 8, 10
输入的三个 5 中只有一个会被计算并包含在输出中。我得到的输出(升序)是:
2 3 4 5 0 0 6 7 8 10。
import java.util.Scanner;
public class Exer3AscDesc
{
public static void main(String args[])
{
Scanner scan = new Scanner(System.in);
int tenNums[]=new int[10], orderedNums[]=new int[10];
int greater;
String choice;
//get input
System.out.println("Enter 10 integers : ");
for (int i=0;i<tenNums.length;i++)
{
System.out.print(i+1+"=> ");
tenNums[i] = scan.nextInt();
}
System.out.println();
//imperfect number ordering algorithm
for(int indexL=0;indexL<tenNums.length;indexL++)
{
greater=0;
for(int indexR=0;indexR<tenNums.length;indexR++)
{
if(tenNums[indexL]>tenNums[indexR])
{
greater++;
}
}
orderedNums[greater]=tenNums[indexL];
}
//ask if ascending or descending
System.out.print("Display order :\nA - Ascending\nD - Descending\nEnter your choice : ");
choice = scan.next();
//output the numbers based on choice
if(choice.equalsIgnoreCase("a"))
{
for(greater=0;greater<orderedNums.length;greater++)
{
System.out.print(orderedNums[greater]+" ");
}
}
else if(choice.equalsIgnoreCase("d"))
{
for(greater=9;greater>-1;greater--)
{
System.out.print(orderedNums[greater]+" ");
}
}
}
}