Head First C学习C标准库的排序函数qsort()

2016-04-01  本文已影响75人  燚随风
qsort(void *array,//这是个数组指针
        szie_t length,//数组长度,
        size_tiem_size,//数组每个元素的长度
        int(*compar)(const coid *,const void *));

qsort()函数的使用:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int compare_scores(const void* score_a, const void* score_b)
{
    int a = *(int*)score_a;
    int b = *(int*)score_b;
    return a-b;
}

int compare_scores_desc(const void* score_a, const void* score_b)
{
    return compare_scores(score_b,score_a);
}

int compare_names(const void* a,const void* b)
{
    char** sa = (char**)a;
    char** sb = (char**)b;
    return strcmp(*sa,*sb);
}
int compare_names_desc(const void* a,const void* b)
{
    return compare_names(b,a);
}

int main()
{
    int scores[] = {543,323,32,554,11,3,112};
    int i;
    qsort(scores,7,sizeof(int),compare_scores_desc);
    puts("These are the scores in order:");
    for (int i = 0; i < 7; i++)
    {
        printf("Scores = %i\n",scores[i]);
    }
    char *names[]={"Karen","Mark","Brett","Molly"};
    qsort(names,4,sizeof(char*),compare_names);
    puts("These are the names in order:");
    for (int i = 0; i < 4; i++)
    {
        printf("%s\n",names[i]);
    }
    return 0;

}
上一篇 下一篇

猜你喜欢

热点阅读