对不起,但我想不出一个好头衔。我有一个看似简单的家庭作业,但我根本无法完成它。这个想法很简单:
你有一个未排序的数组“A”和一个空数组“B”。您必须通过执行以下操作将B变为A的排序版本:
当我第一次听到作业时,看起来很简单,但我根本无法实现。它应该是伪代码,但我尝试过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”在使用-1s时出现类似的问题,我就会遇到麻烦。
答案 0 :(得分:0)
B
中用于空占位符的值无关紧要。您正在从索引0开始插入B
,只是替换其中的任何值,然后替换索引1等。那么为什么最初在B
中的值是什么呢?它可以是任何数字。
答案 1 :(得分:0)
如果我理解正确的话......
b[0] = a[0];
然后可以将以下代码块放入for
循环中以迭代[]的每个元素:
if(a[1] < b[0]) {
b[1] = b[0];
b[0] = a[1];
} else {
b[1] = a[1];
}
除此之外还有更多内容。你需要比较一个b中的每个元素,直到你得到它的正确位置......但正如你所说,这是作业...所以我会把它留给你一些。