すみませんが、いいタイトルが思いつきませんでした。簡単そうな宿題があるのですが、全然できませんでした。アイデアは簡単です:
ソートされていない配列「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 を使用する際に同様の問題がある場合、問題が発生します。