对不起,我想不出一个好的标题。我有一个看似简单的家庭作业,但我根本无法完成。这个想法很简单:
您有一个未排序的数组“A”和一个空数组“B”。您必须通过执行以下操作使 B 成为 A 的排序版本:
- 找到尚未插入 B 的 A 的最小值。
- 将该值插入 B 的第一个空位置。
- 重复直到B满。
当我第一次听到这个任务时,它看起来很简单,但我根本无法实现。它应该是伪代码,但我尝试了 Java。
public static void main(String[] args)
{
int[] A = new int[]{3,4,2};
int[] B = new int[A.length];
int lastindex = -1;
int lastchanged = 0;
for (int j = 0; j < B.length; j++)
{
int small = A[0];
lastchanged = 0;
for (int i = 0; i < A.length; i++)
{
if (lastindex > -1)
{
if (A[i] <= small && i != lastindex && A[i] > A[lastindex])
{
small = A[i];
lastchanged = i;
}
}
else
{
small = A[i];
lastchanged = i;
}
}
B[j] = small;
lastindex = lastchanged;
}
我曾想过将 B 的空值表示为 0,但如果我的“A”为零,使用 -1 时会出现类似的问题。