2016-02-22 104 views
-4

它跳過如果(newklädDataList[minst].märke.CompareTo(newklädDataList[j].märke)> 0),我不明白爲什麼,有人可以發現問題嗎?Exchange排序列表C#

public static void SortByMärke() 
    { 
     for (int i = 0; i < newklädDataList.Count; i++) 
     { 
      int minst = 1; 
      for (int j = i + 1; j < newklädDataList.Count; j++) 
      { 
       if (newklädDataList[minst].märke.CompareTo(newklädDataList[j].märke) > 0) 
       { 
        minst = j; 
       } 
      } 
      if (i < minst) 
      { 
       Swap(minst, i); 
      } 
     } 
    } 
+0

「躍過」是指什麼?跳過支票?或者是條件從未如此? – poke

+1

什麼是收集的類型和什麼類型的märke? – billybob

+2

您的兌換可能是錯誤的。 – xanatos

回答

1

我不知道你是如何實現你的商標類,但沒有我可以做,我會只是試圖讓你更優化的方式排序功能的實現。我認爲我們應該超越.Net 1.0並轉向另一個框架,所以儘快採取最後的行動。 下面是一些添加到你的Märk類的代碼,然後一個魔杖在列表中實現Sort方法,這一切都完成了。

public class Märk : IEquatable<Märk>, IComparable<Märk> 
    { 
     public int Id { get; set; } 

     public string Value { get; set; } 

     public override string ToString() 
     { 
      return "ID: " + Id + " Value: " + Value; 
     } 

     public int Sort(string value1, string value2) 
     { 
      return value1.CompareTo(value2); 
     } 

     public int CompareTo(Märk compareMärk) 
     { 
      if (compareMärk == null) 
      { 
       return 1; 
      } 
      else 
      { 
       return Id.CompareTo(compareMärk.Id); 
      } 
     } 

     public override int GetHashCode() 
     { 
      return Id; 
     } 

     public bool Equals(Märk other) 
     { 
      if (other == null) return false; 
      return (this.Id.Equals(other.Id)); 
     } 

     //...Add somme other codes 
    } 

現在來看看如何使用它

List<Märk> newklädDataList = new List<Märk>(); 


      // Add newklädDataList to the list. 
      newklädDataList.Add(new Märk() { Value = "regular seat", Id = 9 }); 
      newklädDataList.Add(new Märk() { Value = "crank arm", Id = 5 }); 
      newklädDataList.Add(new Märk() { Value = "shift lever", Id = 6 }); ; 
      // Name intentionally left null. 
      newklädDataList.Add(new Märk() { Id = 2 }); 
      newklädDataList.Add(new Märk() { Value = "banana seat", Id = 4 }); 
      newklädDataList.Add(new Märk() { Value = "cassette", Id = 3 }); 

      Console.WriteLine("\nBefore sort:"); 
      foreach (Märk märk in newklädDataList) 
      { 
       Console.WriteLine(märk); 
      } 

      Console.WriteLine("----------------------------------------------------------------------------------------\r\r\r"); 
      newklädDataList.Sort(); 


      Console.WriteLine("\nAfter sort by Märk Id:"); 
      foreach (Märk märk in newklädDataList) 
      { 
       Console.WriteLine(märk); 
      } 

      Console.ReadLine(); 

希望它可以幫助