2012-02-17 20 views
0

私はインターネットや書籍を検索してきましたが、運がなかったので誰かが正しい方向に私を向けることを望んでいました。挿入ソートアルゴリズムを使用したアルファベット順の並べ替えc#

基本的には、組み込みのメソッドではなく挿入の並べ替えを使用して、名前のアルファベット順でオブジェクトを並べ替える必要があります。私は配列とリストを使用しようとしましたが、動作させることはできません。あなたはどうやってそれをやりますか?

私はプレイヤーのクラスを持って、リストオブジェクトで満たされた最新の試み:6ユーザーはそれをソートするには

オブジェクト件まで私は、次のコードを使用しようとしている...

public static List<Player> user = new List<Player>(); 
    private string name; //Read and Write 
    private int score; //Read and Write 
    private double health; //Read and Write 
    private int level; //Read and Write 
    public string[] inventory = new string[30]; 

    public void setName(String newName) 
    { 
     name = newName; 
    } 
    public string getName() 
    { 
     return name; 
    } 
    public void setScore(int newScore) 
    { 
     score = newScore; 
    } 
    public int getScore() 
    { 
     return score; 
    } 
    public void setHealth(double newHealth) 
    { 
     health = newHealth; 
    } 
    public double getHealth() 
    { 
     return health; 
    } 
    public void setLevel(int newLevel) 
    { 
     level = newLevel; 
    } 
    public int getLevel() 
    { 
     return level; 
    } 

    public static void Saved_Player() 
    { 
     user.Add(new Player() { name = "Timid Bob", health = 63, level = 6, score = 2000, }); 
     user[0].inventory[0] = "Steel Sword"; 
     user[0].inventory[1] = "1mm MAW"; 
     user[0].inventory[2] = "Short Bow"; 
     user[0].inventory[0] = "Grenade"; 

     user.Add(new Player() {name = "Killer Bob", health = 82, level = 2, score = 1050000, }); 
     user[1].inventory[0] = "Glass Sword"; 
     user[1].inventory[1] = "250mm MAW"; 
     user[1].inventory[2] = "Elephant Bow"; 
     user[1].inventory[3] = "Rock"; 

など別のクラスのForm1:

権利である// sudoのコード

  for(int i = 0; i < Player.user.Count; i++) 
      { 

      while (i index is higher than i+1 index) 
      { 
       swap i index with i+1 index 
      } 

      } 

希望:/

私はPublicJoeの方法を理解していると思いますが、オブジェクトのインデックスはどのように取得して設定しますか?探してくれてありがとう。

+1

宿題を?何が効いていないのですか?あなたのコードを投稿してください。 –

+0

http://www.publicjoe.f9.co.uk/csharp/sort00.html – Josh

+1

質問を編集してこれまでの最善の試みを含め、それがうまくいかない理由を説明した場合は、それを手伝ってください。 –

答えて

0

配列を挿入するのが悪いです。クラスに戻って考えると、挿入に適したデータ構造が見つかるかもしれません。

挿入ソートでは、ソートされていないリストの項目を取り出し、それを他のリストの正しい場所に配置します。

何をしようとしているようですが、ソート選択の並べ替えのようです。

私は私があなただったら、私はその時二表情を持っていると思いますが

   object temp; 
       object = Player.user[Second]; 
       Player.user[first] = Player.user[Second]; 
       Player.user[(temp - 1)] = Player.user[Second]; 

自分の価値観を入れ替える4行に問題があると思います。

+0

恐らく? Tempオブジェクト 第2オブジェクトインデックス= temp 第2オブジェクトインデックス=第1オブジェクトインデックス temp-1 =第2オブジェクトインデックス – Flak714

0

リストを使用している場合は、単にこれを行うことができます。

public void InsertionSort(Player newUser) 
{ 
    var index = users.FindLastIndex(u => u.Name <= newUser.Name); 
    users.Insert(index, newUser); 
} 
関連する問題