#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int compare_int(const void * a, const void * b) {
int* a1 = (int*)a;
int* b1 = (int*)b;
return *a1 - *b1; //默认正序排序, 修改 return *b1 - *a1 倒叙
}
int compare_char(const void* a, const void* b) {
char c1 = *((char*)a);
char c2 = *((char*)b);
//不区分大小写排序
if (c1 >= 'A' && c1 <= 'Z') c1 += 32;
if (c2 >= 'A' && c2 <= 'Z') c2 += 32;
return c1 - c2;
}
int main(void) {
int x = 10;
int y = 5;
//第一种函数访问
//printf("%d \n",compare_int(&x, &y));
//第二种指针访问
//int (*fp)(const void*, const void*) = &compare_int;
//printf("%d \n",(*fp)(&x, &y));
//printf("%d \n",fp(&x, &y)); //访问是2种方法,用哪个都可以
int arr[] = { 2,10,30,1,11,8,7,111,520 };
//排序
//qsort(arr, sizeof(arr) / sizeof(int), sizeof(int), &compare_int);
//for (int i = 0; i < sizeof(arr) / sizeof(int); i++) {
// printf(" %d", arr[i]);
//}
//排序
char arr1[] = { "abcdefghiABCDEFGHI" };
qsort(arr1, sizeof(arr1) / sizeof(char) - 1, sizeof(char), &compare_char);
for (int i = 0; i < sizeof(arr1) / sizeof(char) - 1; i++) {
printf(" %c", arr1[i]);
}
system("pause");
return 0;
}
奇牛学院