2016-08-02 3 views
0

私は従業員データの構造体を持ち、2つの名前と姓のフィールドを区切ります。この配列をファーストネームでソートしたいのですが、2つの名前が同じ場合は、それらを姓でソートします。私はすでに最初の名前で配列をソートしましたが、ケース2のファーストネームが同じ場合は、最後の名前でそれを行いません。 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

..最後の名前で2つのエントリを並べ替えるあなたのための私の解決策の仕事をしましたか? –

答えて

1

ソート機能を変更して、姓と名の両方を処理します。あなたが代わりに継続の

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

を言う

関連する問題