0

私のアルゴリズムは機能していません。私はすべてのアルゴリズムとJavaScriptの初心者であり、なぜ機能しないのか理解できないようです。

これが配列です(23、19、35、12、30)

最大値=0

これが私が持っているものです...

For K= 0 to n – 2 

  MAX = 0

      For j = 0 to n – k - 2

                         If item[j] > item[MAX]
                         MAX = item[j] 

                  end if
          end for 
      swap n - k - 2 with item[MAX] 
   end for
end SelectionSort

どこが間違っているのですか?ありがとう!!!!

また、トレーステーブルでの使い方を教えてもらえたら嬉しいです!

よろしくクレイグ

4

2 に答える 2

1

この式でmaxを使用すると、問題item [MAX]が発生します。これは、jになります。検討してから、このように再試行してください。選択ソートのデモ

     var arr = new Array (23, 19, 35, 12, 30);         
     temp = 0;

     for( k = 0; k < arr.length-1; k++)
     {

        for( j = k+1;  j < arr.length; j++)
        {

            if (arr [k] > arr [j])
            {

                 temp = arr[k];
                 arr[k] = arr[j];
                 arr[j] = temp;
            }
         }
     }

for(k = 0; k < arr.length; k++)
    alert(arr[k]);​
于 2012-04-26T04:23:26.887 に答える
0

コードにいくつかのエラーがあると思います。まず、両方の場所の上限は、n-k-2ではなくn--k -1にする必要があります(インデックスがすでに最大である場合は、インデックスnk-1の要素を移動しないようにします)。また、item[nk-1]をitem[MAX]と交換する必要があります(作成したインデックスではありません)。私はこのようなものがうまくいくはずだと信じています:

 For K= 0 to n – 1 
   MAX = 0
   For j = 0 to n – k - 1
      If item[j] > item[MAX]
        MAX = item[j] 
      end if
   end for 
   swap item[n - k - 1] with item[MAX] 
  end for
end SelectionSort
于 2012-04-26T06:56:57.493 に答える