2016-08-02 45 views
0

我有一個僱員數據結構,它有2個字段名和姓。我想通過名字對這個數組進行排序,並且在兩個名字相同的情況下,按姓氏排序。我已經按照名字對數組進行了排序,但如果第一個名字相同,仍然無法使用姓。我想實現這種排序,而不使用.Net中的任何內置函數,如array.sort()我只想使用循環。C# - 不使用任何內置函數對結構數組進行排序,只是使用循環

public struct EmployeeData 
     { 
      public char sex; 
      public int age; 
      public int id1; 
      public int id2; 
      public int id3; 
      public string fname; 
      public string lname; 
      public int seniority; 
     } 
    static EmployeeData[] SortByFirstName(EmployeeData[] empdata) 
     { 
      int min = 0; 
      EmployeeData temp; 
      for (int i = 0; i < empdata.Length; i++) 
      { 
       for (int j = i+1; j < empdata.Length; j++) 
       { 
        if (empdata[i].fname.Length < empdata[j].fname.Length) 
        { 
         min = empdata[i].fname.Length; 
        } 
        else 
        { 
         min = empdata[j].fname.Length; 
        } 

        for (int k = 0; k < min; k++) 
        { 
         if (empdata[i].fname[k] > empdata[j].fname[k]) 
         { 
          temp = empdata[i]; 
          empdata[i] = empdata[j]; 
          empdata[j] = temp; 
          break; 
         } 
         else if (empdata[i].fname[k] == empdata[j].fname[k]) 
         { 
          continue; 
         } 
         else 
         { 
          break; 
         } 
        } 
       } 
      } 
      return empdata; 

     } 
+0

做了我的解決方案爲您工作? –

回答

1

改變你的排序函數來處理名字和姓氏。

如果你說

else if (empdata[i].fname[k] == empdata[j].fname[k]) 
    { 
     continue; 
    } 

而是持續的,按姓氏的兩個條目排序..

相關問題