使用 C 语言快速排序将字符串按照 ASCII 码升序排列
示例代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>static Comp(const void *a, const void *b)
{char *pa = (char *)a;char *pb = (char *)b;return strcmp(a, b);
}int main(void)
{char strs[3][10] = { "bd", "am", "kn" };qsort(strs, 3, sizeof(strs[0]), Comp);for (int i = 0; i < 3; ++i) {printf("%s ", strs[i]);}return 0;
}
运行结果:
说明:传参时不可使用 qsort(strs【0】, 3, sizeof(strs[0]), Comp),原因:strs 被解释为一个数组类型,被认定为 strs[0] 具有 3 * 10 = 30 字节,而实际仅仅具有 10 字节,会发生内存写越界,后果不可预料。
示例代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>static Comp(const void *a, const void *b)
{char *pa = (char *)a;char *pb = (char *)b;return strcmp(a, b);
}int main(void)
{char strs[3][10] = { "bd", "am", "kn" };qsort(strs[0], 3, sizeof(strs[0]), Comp);for (int i = 0; i < 3; ++i) {printf("%s ", strs[i]);}return 0;
}
编译结果: