2009-05-16 10 views
0

私は、Javascriptに非常に似ているOpusScriptを使用しています。アレイの手動ソートの実行

配列内のオブジェクトの2つのプロパティで配列をソートする必要があります。

配列のオブジェクト型はScoreEntityで、ScoreとTimeプロパティがあります。私は配列の0のインデックスで最高のスコアを必要とし、その逆もあり、一致するスコアを上書きする時間が短くなります。

私はこれを長年にわたってやろうとしてきましたが、私はその頭の中で頭を上げることはできません。土曜日の症候群があります!

ANSWER:

私はこれを改善する上の任意のコメントは歓迎され、最終的にはバブルソートを使用。

function SortScoreArray(array) 
{ 

    var unsorted = true 
    while (unsorted) 
    { 

     // Tracks whether any changes were made, changed to false on any swap 
     var complete = true 
     for (var i = 0; i < array.length - 1; i++) 
     {   

      // Holds the value for determining whether to swap the current positions 
      var swap = false 

      var currentItem = array[i] 
      var nextItem = array[i + 1] 

      if (currentItem.Score == nextItem.Score) 
      { 

       // The scores are the same, so sort by the time 
       if (currentItem.Time > nextItem.Time) 
       { 
        swap = true 
       } 

      } 
      else if (currentItem.Score < nextItem.Score) 
      { 
       swap = true 
      } 


      if (swap) 
      { 
       array[i] = nextItem 
       array[i + 1] = currentItem 
       complete = false 
      } 

     } 

     if (complete) 
     { 
      unsorted = false 
     } 

    } 

    return array 

} 

答えて

1

algorithmを選択しましたか?

ScoreEntityが(スコアと時間を比較して)より小さいかどうかを判断し、アルゴリズムを実装するだけの比較関数を定義する必要があります。

(私はOpusScriptを知らない - たぶん、あなたはちょうどあなたがcomparsion述語を伝える組み込みの並べ替えを使用することができます)いいえソート残念ながら内蔵

+0

。私は何をしなければならないか分かっている、私はちょうど傾ける論理を書き留めているようだ! – GenericTypeTea

+0

ああ、申し訳ありませんが実際のQuickSortの記事が見つかりました。私は擬似コードを試してみます。 – GenericTypeTea

+0

私は正しい方向に向いてくれてありがとう。私は最後にBubbleSortを使用しました。 – GenericTypeTea

関連する問題