C语言题目 - 调用qsort函数对数组进行排序

这篇具有很好参考价值的文章主要介绍了C语言题目 - 调用qsort函数对数组进行排序。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

题目

如题

思路

其实没什么难的,只要严格按照 qsort 函数的参数来填充即可,这里要用到函数指针

qsort 函数的原型如下:

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

参数说明:

base:指向需要排序的数组的指针,数组中每个元素的大小应为 size 字节。
nitems:数组中的元素个数。
size:每个元素的大小(以字节为单位)。
compar:指向一个比较函数的指针。该函数用于比较两个元素的大小关系。文章来源地址https://www.toymoban.com/news/detail-669995.html

代码

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

//比较函数,也是qsort函数需要的指针参数指向的函数
int compare(const void * a, const void * b);

int main()
{
	int sz[5] = {1,5,2,6,4};//待排序的数组
    int (*compar)(const void *, const void *);//函数指针compar
	int * ps = sz;//指针指向sz数组
	int i;

	compar = compare;//指针指向compare函数

	qsort(ps, 5, 4, compar);//调用 qsort 函数

	for (i=0;i<5;i++)
	{
		printf("%d ",sz[i]);
	}//打印排序结果

	return 0;
}

int compare(const void * a, const void * b)
{
	int num1 = *(const int *)a;//void转换类型后才能使用
	int num2 = *(const int *)b;

	if (num1 > num2)
	{
		return 1;
	}

	if (num1 < num2)
	{
		return -1;
	}

	if (num1 == num2)
	{
		return 0;
	}
}

感悟

  • 要注意调用一个函数一定要严格按照它参数的函数类型来填充参数,比如说这里 qsort 函数的一个参数是 int (*compar)(const void *, const void *),那么这个参数是函数指针,函数指针的类型 int ,以及它的参数类型是 const void *,这两个类型是一点都不能变的。但是在填充函数指针这个参数的时候可以选择填充 函数指针名函数名,因为当函数指针指向一个函数以后,这个函数指针名函数名 就可以互换使用了(只是用法差不多)。
  • 详细理解了 void * 类型的变量怎么使用:比如这里想把把它作为一个比较函数的参数使用,而且我想的是这两个数是 int 类型的,但有一点是 void * 类型的变量不转换类型是无法使用的,所以我要把 void * 类型的变量转换为 int 类型的变量:int num = *(const void *) a;
  • 首先,这个程序最后写的 compare 函数参数的意义是指向数组元素的指针,然后这个函数可以进行简化,让程序来判断元素大小:
int compare(const void * a, const void * b)
{
	return (*(const int *)a - *(const int *)b);
}

到了这里,关于C语言题目 - 调用qsort函数对数组进行排序的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C语言标准库函数qsort( )——数据排序

       大家好!我是保护小周ღ,本期为大家带来的是深度解剖C语言标准库函数 qsort(), qsort()函数他可以对 任意类型 的数据排序, 博主会详细解释函数使用方法,以及使用快速排序的左右指针法模拟实现函数功能 , 这样的排序确定不来学习一下吗???   目录 一、qsort()函

    2024年02月03日
    浏览(40)
  • 【C语言】qsort()函数详解:能给万物排序的神奇函数

    🦄 个人主页 :修修修也 🎏 所属专栏 :C语言 ⚙️ 操作环境 : Visual Studio 2022   目录 一.qsort()函数的基本信息及功能 二.常见的排序算法及冒泡排序 三.逐一解读qsort()函数的参数及其原理 1.void* base 2.size_t num 3.size_t size 4.int (*compar)(const void*,const void*) 四.使用qsort()函数完成整形,

    2024年02月06日
    浏览(48)
  • 还在使用冒泡排序遍历数组?No No No 库函数qsort帮你搞定所有排序还不快学起来!

    🎬 鸽芷咕 :个人主页  🔥 个人专栏 :《C语言初阶篇》 《C语言进阶篇》 ⛺️生活的理想,就是为了理想的生活!    🌈 hello! 各位宝子们大家好啊,刚开始学编程的时候我们都是用冒泡来进行排序的,今天给大家介绍一下新的排序方法库函数qsort!    ⛳️ sor英文原意是

    2024年02月14日
    浏览(41)
  • 【C语言】——指针六:冒泡排序与qsort函数的实现

    1.1、冒泡排序的原理      在实践过程中,我们难免会碰到要给一组数据排序的情况。如果我们掌握一些排序的算法,效率就会高很多。排序的方法有方法有很多,如:希尔排序,快速排序,堆排序……,今天,我们讲的排序方法就是—— 冒泡排序 !      冒泡排序

    2024年04月16日
    浏览(50)
  • 【C语言】回调函数,qsort排序函数的使用和自己实现,超详解

    先记录一下访问量突破2000啦,谢谢大家支持!!! 这里是上期指针进阶链接,方便大家查看:添加链接描述 大家好呀,今天分享一下上期指针进阶中剩余的内容——回调函数,这个很重要滴,让我们一起来学会学懂他吧!!! 标准概念: 回调函数就是一个通过函数指针调

    2024年02月12日
    浏览(53)
  • 如何使用快速排序算法对整数数组进行就地排序?

    快速排序算法是最常用的排序算法之一,尤其是对大型列表进行排序时,大多数编程语言、库都以一种或另一种方式实现了它。在 Java 中,Arrays.sort()方法使用由 Joshua Bloch 等人编写的双枢轴 快速排序 算法对原始数据类型进行排序。这种实现为大量数据集提供了更好的性能,

    2024年02月01日
    浏览(46)
  • 冒泡排序模拟实现qsort()函数

    要模拟qsort()函数,我们首先要知道qsort()函数的特点: 使用快速排序的方法。 适用于任何数据类型的排序。 但由于部分学者还没有学习快速排序算法,所以本篇博客采用冒泡排序来模拟功能类似于qsort()的函数bubble_sort。 C库对qsort()函数解释: 我们得到的关于qsort()函数参

    2024年02月16日
    浏览(55)
  • 用冒泡排序实现快速排序(qsort函数),指针进阶实例

    目录   1、qsort函数是什么 2、冒泡排序实现指针进阶 2.1 主函数 2.2 功能函数声明​编辑 2.3 my_qsort函数介绍 2.4 Swap函数 总结           qsort函数是c语言自带的函数,其功能是实现快速排序。我们来看一下他的参数和返回值:         以上就是qsort的参数和返回值,可以看到,

    2024年02月21日
    浏览(43)
  • 对任意类型数都可以排序的函数:qsort函数

    之前我们学习过冒泡排序: 可以看出这样的排序方法只适用于整形类型的数 那么是否有一种排序可以满足所有类型都适用的排序呢? qsort函数排序 应用: 在这里需要补充一下void* 类型的指针 当然qsort函数排序既然可以实现任意类型,那么我们换几个类型试一下; 结构体类

    2024年02月14日
    浏览(41)
  • 再JAVA中如何使用qsort对类进行排序?

    目录 结论:  解析:    我们知道当我们定义了一个整型数组然后想对其进行排序时就 可以使用 Arrays.toString() 方法对数组进行排序,系统会默认将其按照升序排列。   当我们需要对类进行排序应该怎么做呢? 首先我们先定义一个类:  我们现在有了这个类之后就可以对他

    2024年02月11日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包