qsort函数详解

上篇文章,笔者讲解了冒泡排序的方法,原文链接为:一个典列来带领大家了解冒泡排序思想_念君思宁的博客-CSDN博客,有意者请参考一下!

最近笔者又浅学关于qsort函数的排序方法!下面且听笔者一一道来!

不知道大家对于qsort函数了解多少!可能仅仅限制在qsort函数是快速排序的函数,至于其他的就……额,不知道了!下面请看笔者对于qsort函数的讲解!但也不敢保懂!!

下面笔者是参考部分文献得来的内容!敬请欣赏:

qsort

void qsort (void* base, size_t num, size_t size,int (*compar)(const void*,const void*));
对数组的元素进行排序

对 所指向的数组元素进行排序,每个元素的长度为长,使用函数确定顺序。

此函数使用的排序算法通过调用指定函数并指向元素的指针作为参数来比较元素对。

该函数不返回任何值,但通过对所定义的数组元素进行重新排序来修改所指向的数组的内容。

原文内容为:

对于qsort我们在上面考研看出来,返回值为void 类型,即:可以排序(大小排序)任意类型的数据!

下面笔者就定义:进行简单的讲解!!

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

1.void* base :指向待排序数组的起始位置!

2.size_t num :待排序数组的元素个数!

3.size_t size :(所占字节)待排序数组的元素大小!

4.int (*compar)(const void*,const void*)) 这个就需要我们好好进行分析一下!

我们可以将int (*compar)(const void*,const void*))  进行分开处理!

int (*compar)(const void*,const void*))函数:    (const void*,const void*) 指针:    *compar返回类型: int 

因此,对于int (*compar)(const void*,const void*)) ,我们可以概述为:比较两个元素大小的函数指针!

回想一下:对于不同的数据类型,有着不同的比较方式!所以……qsort显现出来独一无二的作用!

对于两个整型,运用关系运算符进行比较大小(>,<);

对于两个字符串,使用库函数strcmp进行比较大小;

对于两个结构体,也得制定比较方式!

因此我们可以用qsort函数来进行……比较 !

下面请看笔者用qsort函数测试排序整型数组!请看代码!

#include <stdlib.h>
#include <stdio.h>void print(int arr[], int sz)
{int i = 0;for (i = 0; i < sz; i++){printf("%d ", arr[i]);}printf("\n");
}int cmp_int(const void* e1, const void* e2)
{if (*(int*)e1 > *(int*)e2)return 1;else if (*(int*)e1 < *(int*)e2)return -1;elsereturn 0;
}void test2()
{int arr[] = { 2,1,3,7,5,9,6,8,0,4 };int sz = sizeof(arr) / sizeof(arr[0]);qsort(arr, sz, sizeof(arr[0]), cmp_int);print(arr, sz); //打印
}int main()
{test2();return 0;
}

对于上述代码,笔者只对最重要的那一部分进行简单讲解!请读者注意一下!!显而易见的就是该段代码:

int cmp_int(const void* e1, const void* e2)
{if (*(int*)e1 > *(int*)e2)return 1;else if (*(int*)e1 < *(int*)e2)return -1;elsereturn 0;
}

对于: *(int*)e1 与  *(int*)e2; 我们再定义e1与 e2的时候,是定义的void(空类型),所以在使用之前,先将e1与 e2通过  (int*)e1 与  (int*)e2 强制类型转换为: int* 类型!然后在进行解引用操作!

对于在该段代码里面的  if 语句的内容,可以更改为:retrun  (*(int*)e1  -  *(int*)e2);  (升序)(要是想要降序,则可以对调一下)

原因在于:

 qsort函数的返回值为int整型!!

对于上述代码的运行结果为:

对于这篇文章,笔者所写内容大致到此结束!!有不同想法的读者请与笔者进行私聊!!

感激!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/254099.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

C语言函数——qsort函数的使用

目录 一、qsort函数&#xff1a; 1、定义&#xff1a; 2、参数&#xff1a; &#xff08;1&#xff09;.基础 &#xff08;2&#xff09;.数字 &#xff08;3&#xff09;.大小 &#xff08;4&#xff09;.比较 二、总代码&#xff1a; 1、整型比较&#xff1a; 2、浮…

利用qsort函数快速排序

一.qsort函数的类型及参数 void qsort(void *base,size_t num,size_t width,int (*compare)(const void* elem1),const void* elem2)1.第一个参数base&#xff1a;待排序数组的首元素的地址&#xff0c;数据类型为void*。 2.第二个参数 num&#xff1a;待排序数组的元素个数&…

详解c语言中的qsort函数(有图)

目录 目录 一、qsort函数是什么 1、自定义冒泡函数时遇到的问题 2、qsort函数的作用 &#xff08;1&#xff09;int整形数组排序&#xff08;2&#xff09;浮点型数组排序&#xff08;3&#xff09;字符数组排序 &#xff08;4&#xff09;结构体排序 二、qsort函数…

qsort函数详情

文章目录 一.qsort函数的使用1.qsort函数定义&#xff1a;2.使用 二.qsort函数的模拟实现 一.qsort函数的使用 1.qsort函数定义&#xff1a; qsort函数实现的功能为&#xff1a;对一组数据进行排序。 表现形式&#xff1a; void qsort(void *base, size_t num, size_t size,…

qsort函数

目录 1.什么是qsort函数2.实现一个qsort函数3.用qsort函数排序一个结构体4.模仿qsort的功能实现一个通用的冒泡排序 1.什么是qsort函数 我们以前学习过的一些排序算法&#xff0c;如冒泡、希尔、快排等等&#xff0c;它们速度有快有满&#xff0c;但是这些排序都只能排序一种类…

qsort函数的使用方法

前言 qsort函数是C语言库函数内给我们提供的一个可以实现排序的函数 它不仅可以排序数组&#xff0c;还可以排序字符串&#xff0c;以及结构体类型 下面是qsort函数的使用方法以及注意事项 一、了解qsort函数 根据MSDN提供的参数 由此我们可以知道 使用qsort函数需要引用头文…

简单介绍一下qsort函数

目录 一.回调函数 二.qsort函数 三.void*指针 四.用qsort函数进行升序排序 1.整形数组排序 2.结构体数组排序 3.字符数组排序 五.使用冒泡排序模拟实现qsort函数 一.回调函数 回调函数就是一个通过函数指针调用的函数。如果你把函数的指针&#xff08;地址&#xff09;…

C语言qsort函数的使用详解

文章目录 一、qsort函数简介1.函数原型2.参数含义3.比较函数详解 二、比较函数使用案例1.整型数组2.字符数组3.double型数组4.字符串1.按字符串首字母进行排序2.按字符串长度进行排序3.按字典进行排序 5.结构体 三、qsort函数完整使用案例1.整型数组2.字符数组3.double型数组4.…

qsort函数用法 + 模拟实现qsort函数

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前是C语言学习者 ✈️专栏&#xff1a;【C/C】算法 &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章对你有帮助的话 欢迎 评论&#x1f4ac; 点赞…

C语言qsort函数用法

qsort函数简介 排序方法有很多种&#xff1a;选择排序&#xff0c;冒泡排序&#xff0c;归并排序&#xff0c;快速排序等。 看名字都知道快速排序是目前公认的一种比较好的排序算法。因为他速度很快&#xff0c;所以系统也在库里实现这个算法&#xff0c;便于我们的使用。 这就…

qsort函数讲解

qsort函数的作用是将所有数据排序&#xff0c;那么它和普通的冒泡排序或者选择排序有什么区别呢&#xff1f;它不仅仅可以排序数组中的数字&#xff0c;还可以排序结构体。当然升序和降序它都支持&#xff0c;不过输入参数的顺序会有所不同&#xff0c;下面我们来详细讲解一下这…

【C语言】qsort函数的使用和模拟实现

本篇文章我们来了解一下回C语言中qsort函数的使用方法和模拟实现。这是一个通用性很强而且非常方便的库函数&#xff0c;通过这篇文章希望能让你了解sort函数。 目录 一、qsort的介绍&#xff1a; 二、qsort函数的使用 1.qsort排序整形 2.qsort排序字符串 3.qsort排序结…

C语言之——快速排序qsort库函数的讲解

qsort函数C语言编译器函数库自带的排序函数&#xff0c;也叫快速排序函数。之前我写过一篇关于冒泡排序的代码讲解&#xff0c;大家感兴趣的话可以先看一看我对于冒泡排序的讲解。 相比较于冒泡排序&#xff0c;快速排序可以用更加快捷的速度去排列升降序&#xff0c;它的时间复…

C语言qsort函数使用方法大全

文章目录 一、qsort函数简介二、qsort函数常用实例1.比较整型数组2.比较char数组3.比较double数组4.比较字符串4.1按首字母排序4.2按长度排序4,3按字典顺序 5.结构体排序5.1 多级排序 三、qsort深度剖析 一、qsort函数简介 排序方法有很多种&#xff1a;选择排序&#xff0c;冒…

C语言-qsort函数详解

目录 一.qsort函数是什么 二.使用qsort排序-以升序为例 关于void*型指针&#xff1a; 1.整形数组排序 2.字符数组排序 3.字符指针数组排序 4.结构体数组排序 5.浮点型数组排序 三.使用冒泡排序思想模拟实现qsort函数 1.什么是冒泡排序&#xff1a; 2.冒泡排序代码 3. …

C语言qsort()函数的使用(详解)

目录 1.参数含义 1.首元素地址base 2.元素个数num 3.元素大小size 4.自定义比较函数compar 2.使用方式 1.头文件 2.compar的实现 3.整体代码 qsort&#xff08;&#xff09;函数&#xff08;quick sort&#xff09;是八大排序算法中的快速排序&#xff0c;能够排序任意…

虚幻4地形怎么增加层_虚幻周报20200407 | 在家也要好好工作呀~

官方知乎号&#xff1a;虚幻引擎 搜集日期&#xff1a;20200330-20200405 整理编辑&#xff1a; 大钊&#xff0c;小辉辉&#xff0c;马古斯&#xff0c;小帅帅 声明&#xff1a;文档搜集来自网上&#xff0c;难免遗漏&#xff0c;请联系我们投稿和添加关注。该文档版权归整理…

2020年笔记本电脑选购指南

**本文首发微信公众号陈蛋蛋碎碎念&#xff0c;获取更多软件、教程、模板资源&#xff0c;请关注公众号。 最近在群里有小伙伴问关于选购电脑的事&#xff0c;毕竟开学季又要到了。刚好蛋蛋现在又在3C公司工作&#xff0c;所以平时也需要了解这方面的知识&#xff0c;于是就准…

[转]Warzone 2100(战争地带2100)

发行公司&#xff1a;Eidos Interactive 开发公司&#xff1a;Pumpkin Studios 游戏类型&#xff1a;即时战略 游戏语言&#xff1a;英文 发行日期&#xff1a;1999 年4月 系统操作&#xff1a;Win95以上 伴随着这部来自英国开发公司Pumpkin Studios的作品&#xff0c;1999年…

显卡优化软件测试面试,是吹嘘还是真有用?NV游戏优化软件测试

1前言&#xff1a;NVIDIA游戏优化软件试用 英伟达真实热衷为用户提供出色的游戏方案&#xff0c;日前发布了一款GeForce Experience的新软件&#xff0c;本质上是一个基于云端的服务&#xff0c;旨在分析你的硬件并自动调整显示分辨率和游戏设置&#xff0c;以提供更好更优化的…