C语言排序神器 您所在的位置:网站首页 c语言递归用法是什么 C语言排序神器

C语言排序神器

2023-11-13 00:40| 来源: 网络整理| 查看: 265

前言

网上有很多关于qsort函数的讲解,其中对于原理的讲解十分复杂,并且实用性不高。因此小编直接从实用性入手,保证看完就会用!大大提高效率并节约您宝贵的时间。

一、头文件

qsort是stdlib.h中的函数,因此使用前需要声明:

#include

 二、格式

1.参数

qsort函数包含四个参数,分别是:

1.数组名

2.元素个数(从前往后计算)

3.数组元素所占字节(int,double,char等所占字节)

4.排序原则(递增,递减,奇偶交叉等)

int cmp(const void *a,const void *b) { return *(int*)a-*(int*)b; } qsort(num, n, sizeof(int), cmp);

 2.含义

前三个大概没什么好说的,非常简单。主要介绍下第四个的排序原则。

我们通过定义一个函数cmp,通过cmp返回的参数来确定排序规则,需要注意的是:cmp函数的参数需要以const void *a,const void *b的形式来定义,表示a和b的类型是未确定的,在return中进行强制类型转换为int型。*(int*)a-*(int*)b表示以递增顺序,若想以递减只需将a和b换位。

 3.不同类型排序

对于不同类型的数组排序,qsort函数的格式都是相同的,唯一不同在于cmp函数中的返回值类型。

1.整型(int)

int cmp(const void *a,const void *b) { return *(int*)a-*(int*)b; }

2.浮点数(double) 

需要注意浮点数会存在精度损失的问题,所以我们需要通过比较,来返回1或-1,以确定是增序还是降序。

int cmp(const void *a,const void *b) { return *(double*)a>*(double*)b?1:-1; }

3.字符(char)

int cmp(const void *a,const void *b) { return *(char*)a-*(char*)b; }

4.结构体

struct node{ int i; double j; char k; }; int cmp(const void *a,const void *b) { return (*(node*)a).i-(*(node*)b).i; }

 以int为例,其他遵循相同原则;若是要逐级比较,只需增加判断即可。

总结

以上便是qsort函数的使用方法,相信大家已经明白如何使用了。下面是简单的例子:

#include #include int cmp(const void *a,const void *b) { return *(int*)a-*(int*)b; } int main() { int n,i; scanf("%d",&n); int time[n]; for(i=0; i


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有