将未排序的数组A排序为空数组B.

时间:2013-10-01 03:52:36

标签: java arrays sorting pseudocode

对不起,但我想不出一个好头衔。我有一个看似简单的家庭作业,但我根本无法完成它。这个想法很简单:

你有一个未排序的数组“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”在使用-1s时出现类似的问题,我就会遇到麻烦。

2 个答案:

答案 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中的每个元素,直到你得到它的正确位置......但正如你所说,这是作业...所以我会把它留给你一些。