java - 在选择排序项目中,10 个元素的数组仅接受 5 个整数

标签 java arrays sorting

好吧,这是一个 Java 类,但我不是在找人写代码,只是帮我调试这个。我想输入 10 个整数,并在输入和显示时按升序对输入进行排序,数组中不存在任何零 (0)。

作业的示例:

输入 10 个整数 - 一次一个......

输入整数#1:21

已排序数字:21

输入整数#2:48

已排序数字:21 48

输入整数#3:37

已排序数字:21 37 48 等等....

我尝试过选择排序、插入排序和冒泡排序,但数组无法容纳或显示超过 5 个数字。

帮助。

这是我的主要内容:

import java.util.*;

public class Main {

static Scanner input = new Scanner(System.in);

public static void main(String[] args) {
    // TODO Auto-generated method stub

    Scanner input = new Scanner (System.in);

    int j = 1;
    int[] list = new int[10];

    System.out.println("Enter 10 integers - one at a time...");

    for (int i = 0; i < list.length; i++){

        System.out.print("Enter integer #" + j + ": ");
        list[i] = input.nextInt();
        j++;

        //SortMethod.sort(list, list.length);
        SelectionSort.sort(list);
        //BubbleSort.sort(list);
        System.out.print("Sorted numbers: ");

        for(int p= 0; p<list.length; p++){  
            if (list[p] !=0)

                System.out.print(list[p] + " ");
        }
        System.out.print("\n");
    }   
    System.out.println("Done!");
}
}

这是我的选择排序:

public class SelectionSort {


public static void sort (int[] list){
    for(int i=0; i<list.length; i++)
     {
        for(int j=i+1; j<list.length; j++)
        {
            if(list[i] > list[j] )
            {
                int temp = list[j];
                list[j] = list[i];
                list[i] = temp;
            }
        }
     }
 }
}

提前致谢!

最佳答案

为什么不使用 List 而不是 jdk 中的数组和现成的排序实现 -> Collections.sort()

无论如何,问题是您将新整数插入到已经排序的数组中,这会导致代码出现故障。因此,当您在索引 0、1、2、3、4 上插入新元素时,排序算法会将它们移动到位置 5、6、7、8、9。从此时起,您的输入开始用输入中的新值覆盖排序值 - (主循环 i>=5)。总而言之,它接受 10 个整数,但请覆盖其中 5 个。

这是你的作品的小修改版本,它可以按照你想要的方式工作。分析一下!

import java.util.*;

public class test {

    static Scanner input = new Scanner(System.in);

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        Scanner input = new Scanner(System.in);

        int j = 1;
        int[] list = new int[11];

        System.out.println("Enter 10 integers - one at a time...");

        for (int i = 0; i < list.length - 1; i++) {

            System.out.print("Enter integer #" + j + ": ");
            list[0] = input.nextInt();
            j++;

            //SortMethod.sort(list, list.length);
            SelectionSort.sort(list);
            //BubbleSort.sort(list);
            System.out.print("Sorted numbers: ");

            for (int p = 1; p < list.length; p++) {
                if (list[p] != 0)

                    System.out.print(list[p] + " ");
            }
            System.out.print("\n");
        }
        System.out.println("Done!");
    }
}

class SelectionSort {

    public static void sort(int[] list) {
        for (int i = 0; i < list.length; i++) {
            for (int j = i + 1; j < list.length; j++) {
                if (list[i] > list[j]) {
                    int temp = list[j];
                    list[j] = list[i];
                    list[i] = temp;
                    i--;
                    break;
                }
            }
        }
    }
}

关于java - 在选择排序项目中,10 个元素的数组仅接受 5 个整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19558027/

相关文章:

c - 将数组指针传递给 C 中的函数

c - 如何在不更改 C 中原始数组的情况下对指针数组进行排序

javascript - 使用子类别对列表项进行排序

java - 具有不断增长的逻辑与的多个 if 语句

java - Java系统属性和上下文参数的比较

java - 有些jar文件是通过双击运行的,而有些则不是

java - 如何创建具有 1 GB 堆的可执行 jar 文件

arrays - 使用额外的单词连接字符串数组中的所有元素

javascript - 获取对象数组中每一天的最新日期?

sorting - Pandas 排序并保持索引不变