Java : Sort integer array without using Arrays. 排序()

标签 java arrays sorting integer int

这是我们 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/

相关文章:

java - 如何列出最近/正在运行的应用程序

javascript - 使用javascript的reduce方法将对象数组转换为每年和每月

c - 在数组中搜索特定标记/字符串 C

python - 仅按其值之一对复杂的Python字典进行排序

mysql - SQL有没有办法在不使用UNION的情况下保留元数据的同时将多个时间列排序为一个?

java - 类型转换仅适用于保存到数据库,不适用于显示

java - 使用 apache Derby 的 WHERE 子句出现 SQL 语法错误

php - 在 PHP 中保持数组排序

java - 防止蜘蛛收集 Tomcat session

javascript - 如何比较两个文本输入值?