java当我在排序后尝试在数组中插入值时,得到的默认值为0
我有一个大小为4的整数数组。我通过add方法向它添加元素。这是一个未排序的数组。我通过下面代码中显示的排序方法对其进行排序。排序方法将最小的数字放在位置a[0]中。当我尝试在调用sort方法后添加元素时,我总是得到一个返回值0。有办法解决这个问题吗
import java.util.Arrays;
public class Scrap {
private static int[] array = new int[4];
private static int i = 0;
public static void main(String[] args) {
Scrap pq = new Scrap();
pq.add(4);
pq.insert(3);
pq.add(5);
pq.sort();// smallest to largest sort method.
// System.out.println(array[0]);
pq.insert(1);
pq.sort();
int test = pq.Minimum();
System.out.println("The smallest element of the array is " + test);
pq.sort();
}
//
public void add(int input) {
insert(input);
}
// Method to insert number into the array.
public void insert(int input) {
array[i] = input;
i++;
}
// Finding smallest number of the array.
public int Minimum() {
int a = array[0];
return a;
}
// Sorts the array from smallest to largest integer
public void sort() {
int first, temp;
for (int i = array.length - 1; i > 0; i--) {
first = 0;
for (int j = 1; j <= 1; j++) {
if (array[j] > array[first])
first = j;
}
temp = array[first];
array[first] = array[i];
array[i] = temp;
}
}
public int remove() {
return delete();
}
public int delete() {
return remove();
}
// Method to convert the array into a string for output
}
# 1 楼答案
我假设您将使用正确的
sort
方法(因为这不正确,您可以使用Arrays.sort)。但如果排序正确,代码中仍然存在逻辑问题开始时,数组包含所有0。添加前3个int后,当调用sort方法时,数组按以下顺序包含值:
注意,
i
的值没有改变。在这种状态下,i的值是3。因此,当您插入1时,新值变为因此,在再次排序之后,数组的值变为
所以很明显,最小值是0
# 2 楼答案
我认为这不是对数组进行排序的最有效方法。只需1个for循环就可以实现这一点。尝试将数组从最小到最大排序
# 3 楼答案
简而言之,问题是:
[0, 0, 0, 0]
[4, 3, 5, 0]
李>[0, 3, 4, 5]
。事实上,它变为^{sort
的实现显然被破坏了。sort
的实现。)李>[0, 5, 3, 1]
李>如果实现了我上面建议的修复,并且只对第一个
size
元素进行排序,那么第一次调用sort
之后的内容应该变成[3, 4, 5, 0]
,插入1之后的内容应该变成[3, 4, 5, 1]
。当你再次排序时,内容应该变成[1, 3, 4, 5]
,最小值应该是1,而不是0更具体地说:
private static int i = 0;
更改为private int size = 0;
。这里的名字i
非常不合适,肯定会让你感到困惑size
是合适的。把它设为static
也没有意义,所以我建议删除这个关键字李>sort
的实现。有许多基本的排序算法很容易实现。在实现中,不要一直到array.size
,而是一直到size
。你看到区别了吗size
是Scrap
中的字段,本质上是使用add
或insert
方法添加的元素数李>清理一下也不错:
add
方法并将insert
重命名为add
李>remove
和delete
方法。它们没有被使用,如果你试图像现在这样使用它们,你会得到堆栈溢出(这些方法永远互相调用)在程序中的每个步骤后查看数组的内容
创建
Scrap pq
后,这是其数组的内容:然后是一些修改:
此时的内容:
到目前为止还不错
然后你把它分类:
此时的内容:
哎哟。排序实现的效果不是很好,是吗。但我们暂时忽略这一点。下一步:
此时的内容:
所有这些行为都没有意义,可能这不是您计划的程序工作方式。检查程序,在每个步骤后验证内容。在当前步骤正常工作之前,不要进行下一步