C++ qsort函数用法实例
qsort函数是对快排的实现,可以对各种数据结构的数组形式进行排序,不过需要自己来给出该数据结构的比较函数;下面仅以int和cstring为例来描述其用法
int型:
#include <stdio.h> #include <stdlib.h> int intcmp(const void* it1, const void* it2) { return *(int*)it1 - *(int*)it2; } int main() { int a[3] = {3, 1, 2}; qsort(a, 3, sizeof(int), intcmp); printf("%d\t%d\t%d\n", a[0], a[1], a[2]); return 0; }
cstring型:
#include <stdio.h> #include <stdlib.h> #include <string.h> #define ARRN 3 int cstring_cmp(const void *a, const void *b) { const char **ia = (const char **)a; const char **ib = (const char **)b;return strcmp(*ia, *ib); } int main() { char a[ARRN][10] = {"3456789", "234567", "4567"}; char* p[ARRN]; for (int i = 0; i < ARRN; i++) { p[i] = a[i]; } printf("%s\t%s\t%s\n", p[0], p[1], p[2]); qsort(p, 3, sizeof(char*), cstring_cmp); printf("%s\t%s\t%s\n", p[0], p[1], p[2]); return 0; }
容易出错的地方就是:
const char **ia = (const char **)a; const char **ib = (const char **)b;
仅仅将数组的指针传入