C 上的排序数组顺序
Sorting Array order on C
我试图在 C 上按顺序对这个数组进行排序,但我没有做对。我做错了什么?排列顺序错误,应该按以下顺序显示:
0: boy
1: is
2: right
3: sitting
4: The
5: there.
谢谢大家!
int n = sizeof(arr) / sizeof(arr[0]);
int i;
// Print the given array
printf("Given array is\n");
for (i = 0; i < n; i++)
printf("%d: %s \n", i, arr[i]);
// Sort the array
sort(arr, n);
// Print the sorted array
printf("\nSorted array is\n");
for (i = 0; i < n; i++)
printf("%d: %s \n", i, arr[i]);
return 0;
}
Output:
Sorted array is
The
boy
is
right
sitting
there.
What I'm doing wrong?
没有。您的代码工作正常。
调试这个的一个好方法是打印每个单词的第一个字符的值。这将显示 'T'、'b' 等的值,并且您会看到 A-Z 的值低于 a-z.
从另一个角度来看,如果您希望单词按照问题顶部给出的顺序打印,您将不得不对它们进行排序,以使它们不是 ASCII 顺序。您需要想出一个 compare
函数,将 'T' 和 't' 视为相同。
我试图在 C 上按顺序对这个数组进行排序,但我没有做对。我做错了什么?排列顺序错误,应该按以下顺序显示:
0: boy
1: is
2: right
3: sitting
4: The
5: there.
谢谢大家!
int n = sizeof(arr) / sizeof(arr[0]);
int i;
// Print the given array
printf("Given array is\n");
for (i = 0; i < n; i++)
printf("%d: %s \n", i, arr[i]);
// Sort the array
sort(arr, n);
// Print the sorted array
printf("\nSorted array is\n");
for (i = 0; i < n; i++)
printf("%d: %s \n", i, arr[i]);
return 0;
}
Output:
Sorted array is
The
boy
is
right
sitting
there.
What I'm doing wrong?
没有。您的代码工作正常。
调试这个的一个好方法是打印每个单词的第一个字符的值。这将显示 'T'、'b' 等的值,并且您会看到 A-Z 的值低于 a-z.
从另一个角度来看,如果您希望单词按照问题顶部给出的顺序打印,您将不得不对它们进行排序,以使它们不是 ASCII 顺序。您需要想出一个 compare
函数,将 'T' 和 't' 视为相同。