C语言标准库中自带的快速排序函数qsort(),排序效率特高,使用简单方便,非常实用。qsort()的函数原型如下:
#include <stdlib.h> void qsort(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *));
一、 整型数组排序
#include <stdio.h> #include <stdlib.h> int compar(const void *a, const void *b) { int n = *(int *)a; int m = *(int *)b; return (n - m); } int main(void) { int a[10] = {12, 76, 99, 34, 35}; printf("排序前:"); for(int i=0; i<5; i++) { printf("%d\t", a[i]); } printf("\n"); qsort(a, 5, sizeof(int), compar); printf("排序后:"); for(int i=0; i<5; i++) { printf("%d\t", a[i]); } printf("\n"); return 0; }
二、字符型数组排序
#include <stdio.h> #include <stdlib.h> #include <string.h> int compar(const void *a, const void *b) { char *n = *(char **)a; char *m = *(char **)b; return strcmp(n, m); } int main(void) { char *a[10] = {"Beijing", "Shanghai", "Nanjing", "Wuxi", "China"}; printf("排序前:"); for(int i=0; i<5; i++) { printf("%s\t", a[i]); } printf("\n"); qsort(a, 5, sizeof(char *), compar); printf("排序后:"); for(int i=0; i<5; i++) { printf("%s\t", a[i]); } printf("\n"); return 0; }