|
これを実行すると辞書順になるとこと
ならないとこがあるのですがどこが悪いのですか?
#include <stdio.h>
#include <string.h>
void quick_sort(char [][30], int, int);
int main()
{
char name[][30] = {
"Ka", "Ao", "Is", "Wa", "Ue",
"Uet", "On", "Oga", "Aok", "Ka",
"Kim", "Kik", "Kur", "Ko", "Sa",
"Sai", "Sag", "Sas", "Shi", "Shis",
"Shir","Suz", "Su", "Seg", "Set",
"Son", "Tac", "Tag", "Too", "Tsu",
"Tom", "Tod", "Nak", "Ni", "Nem",
"Nom", "Ha", "Hi", "Ho", "Ma",
"Mi", "Mu", "Mo", "Ya", "Yo",
"Yos", "Yok", "Wa", "Wac", "I"
};
const int size = sizeof name / sizeof *name;
int i;
quick_sort(name, 0, size-1);
for (i = 0; i < size; i++) puts(name[i]);
return 0;
}
void quick_sort(char name[][30], int s, int e)
{
int i, j; char t[30],x[30];
if (s >= e) return;
strcpy(x,name[(s + e) / 2]);
for (i = s, j = e; ; i++, j--) {
while (strcmp(name[i],x) < 0) i++;
while (strcmp(name[j],x) > 0) j--;
if (i >= j) break;
strcpy(t,name[i]);strcpy(name[i],name[j]);
strcpy(name[j],t);
}
quick_sort(name, s, j-1);
quick_sort(name, i+1, e);
}
|