select-在 c 中按长度对字符串进行排序
select-sorting strings by its length in c
我必须用 C 编写代码,使用 select 排序算法按长度对字符串进行排序。但是排序不起作用,我不知道为什么 :))
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;
}
您比较的是指针,而不是字符串长度。要按字符串长度排序,请更改:
cityofMiddleEarth[j]<cityofMiddleEarth[min]
至:
strlen(cityofMiddleEarth[j]) < strlen(cityofMiddleEarth[min])
我必须用 C 编写代码,使用 select 排序算法按长度对字符串进行排序。但是排序不起作用,我不知道为什么 :))
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;
}
您比较的是指针,而不是字符串长度。要按字符串长度排序,请更改:
cityofMiddleEarth[j]<cityofMiddleEarth[min]
至:
strlen(cityofMiddleEarth[j]) < strlen(cityofMiddleEarth[min])