C语言程序设计之标准库快速排序qsort函数用法示例

本文介绍C语言标准库中的qsort函数,并通过一个实际案例展示如何使用该函数对结构体数组进行排序。示例中按照点到原点的距离对点进行排序。

C语言程序设计之标准库快速排序qsort函数,排序效率高,使用方便,太棒了。

qsort函数定义如下:

#include <stdlib.h>

void qsort(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *));

qsort函数示例,排序点,按距离排序。直接上代码:

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

struct point { int x; int y; };

int my_dist_cmp(const void* i, const void* j)
{
    struct point* a = (struct point*)i;
    struct point* b = (struct point*)j;
    return ((a->x) * (a->x) + (a->y) * (a->y)) - ((b->x) * (b->x) + (b->y) * (b->y));
}

int main(void)
{
    struct point points[4] = { {10,5},{0,0},{-4,-5},{5,10} };

    printf("排序前的点:\n");
    for (int i = 0; i < 4; i++) {
        printf("(%d, %d) ", points[i].x, points[i].y);
    }
    printf("\n");

    qsort(points, 4, sizeof(struct point), my_dist_cmp);

    printf("排序后的点:\n");
    for (int i = 0; i < 4; i++) {
        printf("(%d, %d) ", points[i].x, points[i].y);
    }
    printf("\n");

    return(0);
}

运行结果:

E:\Workspace>tcc -run hello.c
排序前的点:
(10, 5) (0, 0) (-4, -5) (5, 10)
排序后的点:
(0, 0) (-4, -5) (5, 10) (10, 5)

至此,OK,大功告成。。。

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值