2017-11-03 6 views
1

Cでコードを書く必要があります。そのコードは、選択ソートアルゴリズムで文字列を長さで並べ替える必要があります。しかし、並べ替えは機能しません。理由はわかりません。)文字列の長さをcで選択して並べ替え

char * cityofMiddleEarth[CITIES] = { "Havens of Sirion", "Esgaroth", 
"Tirion", "Rivendell", "Romenna", "Hobbiton", "Carn Dum", 
            "Ephel Brandir", "Eldalonde", 
"Avallone", "Hyarastorni", "Linhir", "Minas Morgul", "Valmar", 
            "Waymeet", "Pelargir", "Obel Halad", 
"Bree", "Havens of the Falas", "Goblin Town", "Almaida" }; 

    int len, min, i, j; 
    len = sizeof(cityofMiddleEarth)/sizeof(cityofMiddleEarth[0]); 

    for (i = 0; i<len - 1; i++) 
    { 
     min = i; 
     for (j = i; j<len; j++) 
     { 
      if (cityofMiddleEarth[j]<cityofMiddleEarth[min]) 
      { 
       min = j; 
      } 
     } 

     char *temp = cityofMiddleEarth[i]; 
     cityofMiddleEarth[i] = cityofMiddleEarth[min]; 
     cityofMiddleEarth[min] = temp; 
    } 

答えて

1

文字列の長さではなくポインタを比較しています。文字列の長さでソートするには、変更:

cityofMiddleEarth[j]<cityofMiddleEarth[min] 

へ:

strlen(cityofMiddleEarth[j]) < strlen(cityofMiddleEarth[min]) 
+0

はああありがとう! <3 – arsy

関連する問題