这是我们 Java 类(class)中一项练习中的说明。首先,我想说我“做好了功课”,我不只是懒惰地要求 Stack Overflow 上的某人为我回答这个问题。在所有其他练习中,这个特定项目一直是我的问题,因为我一直在努力为此寻找“完美算法”。
Write JAVA program that will input 10 integer values and display either in ascending or descending order. Note: Arrays.sort() is not allowed.
这是我想出的代码,它可以工作,但有一个明显的缺陷。如果我输入相同的值两次或更多次,例如:
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]+" ");
}
}
}
}
最佳答案
简单的排序算法Bubble sort :
public static void main(String[] args) {
int[] arr = new int[] { 6, 8, 7, 4, 312, 78, 54, 9, 12, 100, 89, 74 };
for (int i = 0; i < arr.length; i++) {
for (int j = i + 1; j < arr.length; j++) {
int tmp = 0;
if (arr[i] > arr[j]) {
tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
}
}
}
关于Java : Sort integer array without using Arrays. 排序(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13548619/