0

こんにちは、私が取っているクラスで挿入ソートメソッドが機能するようにしようとしていましたが、すでにJavaライブラリにあるリンクリストクラスを使用せずに、挿入ソートを使用して整数のリンクリストをソートするように言われました。

これが私の内部ノードクラスです。循環二重リンクリストの概念をまだ完全に把握していないため、単一リンクのみにしました

public class IntNode
{
  public int value;
  public IntNode next;
}

そして、これが IntList クラスの挿入ソート メソッドです。

public IntList Insertion()
{
IntNode current = head;

while(current != null)
    {
    for(IntNode next = current; next.next != null; next = next.next)
        {
        if(next.value <= next.next.value)
            {
            int temp = next.value;
            next.value = next.next.value;
                next.next.value = temp;
            }           
        }
    current = current.next;
    }
return this;
}

私が抱えている問題は、ループを正常に実行するのにまったく並べ替えられないことですが、リスト内の値をまったく操作しないことです。

4

3 に答える 3

1

リストの最初のノードから毎回開始する必要があり、ループは次のようにリストの末尾 -1 で終了する必要があります

 public static IntList Insertion()
{
     IntNode current = head;
     IntNode tail = null;
     while(current != null&& tail != head )
     {
       IntNode next = current;
      for( ; next.next != tail;  next = next.next)
    {
    if(next.value <= next.next.value)
        {
        int temp = next.value;
        next.value = next.next.value;
            next.next.value = temp;
        }
    }
    tail = next;
   current = head;
  }
 return this;

}

于 2013-05-07T04:10:05.003 に答える