Java 不显示排序数组
我创建了一个类,其中创建了一个用于选择排序的方法。我将数组作为用户输入并传入选择排序。在调用之前,它会显示值。调用后,所有元素均为0Java 不显示排序数组,java,arrays,insertion-sort,Java,Arrays,Insertion Sort,我创建了一个类,其中创建了一个用于选择排序的方法。我将数组作为用户输入并传入选择排序。在调用之前,它会显示值。调用后,所有元素均为0 import java.util.Scanner; public class Selectionsortarray { public static void Selectionsort(int num[]) { for (int i=0;i<num.length;i++) { for (int j=i+1;j
import java.util.Scanner;
public class Selectionsortarray {
public static void Selectionsort(int num[]) {
for (int i=0;i<num.length;i++) {
for (int j=i+1;j<num.length;j++) {
if (num[j]<num[i]) {
int temp=num[i];
num[i]=num[j];
num[j]=temp;
}
}
}
}
public static void main(String[] args) {
Scanner k = new Scanner(System.in);
int a[] = new int[40];
System.out.println("Enter the no. of elements");
int n= k.nextInt();
System.out.println("Enter the array");
for (int i=0;i<n;i++) {
a[i] = k.nextInt();
}
System.out.println("The array before sorting is");
for (int i=0;i<n;i++) {
System.out.println(a[i]);
}
Selectionsort(a);
System.out.println("The array is");
for (int i=0;i<n;i++) {
System.out.println(a[i]);
}
k.close();
}
}
import java.util.Scanner;
公共类Selectionsortarray{
公共静态void Selectionsort(int num[]){
对于(int i=0;i您正在创建一个包含40个元素的数组,并对其进行排序,而不是创建一个大小为n
(用户提供的输入)的数组
这将导致数组的开头包含由您提供的n
元素,尾部为全零(40-n
元素)。对数组排序时,这些零被推到开头,打印时,仅打印它们
最简单的修复方法是更改行:
int a[] = new int[40];
进入
并在扫描阵列长度后按下它
还要注意,如果您尝试向数组中插入40多个元素(n>40
)在当前代码中,它将崩溃。您的程序应该工作得很好。这里的问题是,您定义了40个元素的数组,默认情况下使用0初始化,post表示您覆盖了用户输入的数字,在post排序结束时,您只需按升序打印n个元素,这将打印所有的零
您需要删除此行:
int a[] = new int[40];
然后将其粘贴到下面int n=k.nextInt();
like
int a[] = new int[n];
它应该会起作用
这将节省空间并加快排序速度,因为您将减少迭代次数。a数组有40个位置,大于0的数字位于数组末尾,您只显示有序数组的前n个元素,它们都是0
int a[] = new int[n];