Loading

C语言-qsort排序

通过qsort函数来自定义排序

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

//定义结构体
struct Stu{
    char stuName[20];
    int age;
};

int main(){
    struct Stu s[] = {{"wangwu", 20},{"zhangsan", 10}, {"lisi", 40}};
    int size = sizeof(s) / sizeof(s[0]);
    qsort(s, size, sizeof(s[0]), stuName_cmp);
    
    //遍历结构体
    for (int i = 0; i < size; i++){
        printf("StuName:%s,StuAge:%d\n", s[i].stuName, s[i].age);
    }
    return 0;
}

//根据姓名升序排序
int stuName_cmp(const void * p1, const void * p2){
    return strcmp(((struct Stu*)p1)->stuName, ((struct Stu*)p2)->stuName);
}

//根据年龄倒序排序
int stuAge_cmp(const void * p1, const void * p2){
    return (*(int *)p2 - *(int *)p1);
}

 

posted @ 2025-04-27 15:30  云辰  阅读(5)  评论(0)    收藏  举报