qsort函数原型
void qsort(void *base, size_t num, size_t width, int(*compare)(const void*elem1, const void *elem2));
其中compare为比较函数的函数指针
width为字节大小
elem1和elem2分别为两个需要比较的元素地址
num为比较的元素个数
1.快速排序整形数组
#include<stdio.h> #include<stdlib.h> int int_cmp(const void*elem1, const void *elem2)//整形比较 { return (*(int*)elem1 - *(int*)elem2); } int main() { int arr[10] = {1,3,5,7,9,2,4,6,8,0}; int sz = sizeof(arr) / sizeof(arr[0]); int i = 0; //快速排序 qsort(arr, sz, sizeof(int), int_cmp); for (i = 0; i < sz; i++) { printf("%d", arr[i]); } printf("\n"); system("pause"); return 0; }
2.快速排序字符数组
#include<stdio.h> #include<stdlib.h> #include<string.h> int int_cmp(const void*elem1, const void *elem2)//整形比较 { return (*(int*)elem1 - *(int*)elem2); } int str_cmp(const void*elem1, const void *elem2)//字符串比较 { return strcmp((char*)*(int *)elem1,(char*)*(int *)elem2); } int main() { char *arr[] = { "dddd", "aaaa","ccccc", "bbbb" };//每个字符串产生一个首字符地址, //放到arr数组里 int sz = sizeof(arr) / sizeof(arr[0]); int i = 0; qsort(arr, sz, sizeof(char*), str_cmp); //若在传函数参数的地方写成strcmp,strcmp返回值类型为char*,而qsort里的函数返回类型 //void*,比较两元素的地址传进去 for (i = 0; i < sz; i++) { printf("%s", arr[i]); } system("pause"); return 0; }
本文出自 “无以伦比的暖阳” 博客,请务必保留此出处http://10797127.blog.51cto.com/10787127/1721863
原文地址:http://10797127.blog.51cto.com/10787127/1721863