您好我正在尝试创建一个查找数组模式的方法。要做到这一点,我首先需要创建一个方法,将列表从最小到最大排序,但我不确定我在第一时间做错了什么
public class Mode {
public int [] sort(int[] asd) {
int[] sorted = new int[10];
for (int i = 0; i < asd.length; i++) {
for (int j = 1; j < asd.length; j++) {
if ( (asd[i] > asd[j]) && (i != j) ) {
int temp = asd[j];
asd[j] = asd[i];
asd[i] = asd[temp];
}
else
continue;
}
}
return sorted;
}
public static void main(String[] args) {
Mode list1 = new Mode();
int[] array = {3,2,5,4,1,1,1,1,10,9};
int[] potato = list1.sort(array);
for (int i = 0; i < potato.length; i++)
System.out.print(potato[i]);
}
}
当我运行它时,我得到0000000000作为输出。我认为这个方法有问题,因为我正在返回一个已经初始化的数组,但没有放入那里。我如何(在我的嵌套for循环中)在排序数组中添加每个数字?
答案 0 :(得分:1)
您的代码中存在一些问题,它们按以下方式修复:
public class Mode {
public int [] sort(int[] asd) {
int[] sorted = asd.clone();
for (int i = 0; i < sorted.length; i++) {
for (int j = i+1; j < sorted.length; j++) {
if ( (sorted[i] > sorted[j]) && (i != j) ) {
int temp = sorted[j];
sorted[j] = sorted[i];
sorted[i] = temp;
}
}
}
return sorted;
}
public int findMode(int[] sorted) {
// do whatever you want to do here...
return 0;
}
public static void main(String[] args) {
Mode list1 = new Mode();
int[] array = {3,2,5,4,1,1,1,1,10,9};
int[] potato = list1.sort(array);
for (int i = 0; i < potato.length; i++) {
System.out.print(potato[i] + ",");
}
System.out.println();
System.out.print(list1.findMode(potato));
}
}
要解释一下,之前您正在排序asd
。现在我们正在排序sorted
,它以asd
。
j
的循环应该从i+1
开始。
“交换”操作的最后一部分应为sorted[i] = temp
。
答案 1 :(得分:0)
您要在排序方法中分配asd
的元素,然后返回数组sorted
,这在您的sort
方法中永远不会改变。
此外,您应该将sorted
数组初始化为与asd
相同的大小。
答案 2 :(得分:0)
您可以使用 java.util.Arrays 按升序对数组进行排序
public class SortArray {
public static void main(String[] args) {
int[] array = { 3, 2, 5, 4, 1, 1, 1, 1, 10, 9 };
Arrays.sort(array);
for (int i = 0; i < array.length; i++) {
System.out.print(array[i] + " ");
}
}
}
上述代码段的输出将为
1 1 1 1 2 3 4 5 9 10