qsort函数排序举例

使用qsort函数快速排序应用举例

这篇博客是用qsort函数来快速排列float型数据,分别按照年龄(int型)、姓名(char型)排列结构体。看懂就看懂,看不懂我也不想解释了。

简略解释一下qsort函数:

void qsort( void *base, size_t num, size_t width, int (__cdecl *compare )(const void *elem1, const void *elem2 ) );

以下内容来自MSDN:

Return Value
NoneParameters
baseStart of target array
numArray size in elements
widthElement size in bytes
compareComparison function
elem1
Pointer to the key for the searchelem2
Pointer to the array element to be compared with the key
博主水平有限,想知道qsort函数具体怎么用的自己百度吧。

直接上代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<string.h>int cmp_float(const void* e1, const void* e2)
{//return (int)*(float*)e1 - *(float*)e2;//qsort函数的最后一个参数需要一个返回整型,而这里返回的是一个实型,写成下面的代码会更好:if (*(float*)e1 == *(float*)e2)return 0;else if (*(float*)e1 < *(float*)e2)return -1;elsereturn 1;
}
void text_float()
{float f[] = { 1.5,19.0,2.4,8.3,0.8,0.9 };int sz = sizeof(f) / sizeof(f[0]);qsort(f, sz, sizeof(f[1]), cmp_float);for (int i = 0; i < sz; i++)printf("%f\n", f[i]);
}//以下是结构体排序:
struct Stu
{char name[20];int age;
};int cmp_struct_by_age(const void* e1, const void* e2)
{return ((struct Stu*)e1)->age - ((struct Stu*)e2)->age;
}
int cmp_struct_by_name(const void* e1, const void* e2)
{//字符比较大小要用<string.h>文件夹下的strcmp()函数return strcmp(((struct Stu*)e1)->name, ((struct Stu*)e2)->name);
}void text_struct()
{struct Stu s[] = { {"张三",20},{"李四",30},{"王五",10} };int sz = sizeof(s) / sizeof(s[1]);qsort(s, sz, sizeof(s[1]), cmp_struct_by_age);printf("姓名\t年龄\n");for (int i = 0; i < sz; i++)printf("%s\t%d\n", s[i].name,s[i].age);
}
void text_name()
{struct Stu s[] = { {"张三",20},{"李四",30},{"王五",10} };int sz = sizeof(s) / sizeof(s[1]);qsort(s, sz, sizeof(s[1]), cmp_struct_by_name);printf("姓名\t年龄\n");for (int i = 0; i < sz; i++)printf("%s\t%d\n", s[i].name, s[i].age);
}int main()
{text_float();//按照升序排列float型数据text_struct();//按照年龄升序排列结构体text_name();//按照姓名排列结构体return 0;
}
最后附上运行结果:

在这里插入图片描述

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

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

相关文章

C语言qsort函数详解

目录 一、qsort函数的使用 二、qsort函数的模拟 一、qsort函数的使用 快排函数qsort是C的库函数&#xff0c;它可以对输入的任何类型的数组排序&#xff0c;通过该函数的函数声明我们可以看出它的使用方法&#xff1a; 举个栗子&#xff1a; #include<stdio.h> #inclu…

C语言 - qsort函数详解

文章目录 一.qsort函数简介1.qsort函数是C标准库<stdlib.h>库中的函数&#xff0c;使用时引入#include <stdlib.h>。**2.它的函数原型是 void qsort(void* base, size_t num, size_t width, int (*compare)(const void*, const void*))3.这些参数都是什么意思&…

qsort函数详解

上篇文章&#xff0c;笔者讲解了冒泡排序的方法&#xff0c;原文链接为&#xff1a;一个典列来带领大家了解冒泡排序思想_念君思宁的博客-CSDN博客&#xff0c;有意者请参考一下&#xff01; 最近笔者又浅学关于qsort函数的排序方法&#xff01;下面且听笔者一一道来&#xff…

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;请联系我们投稿和添加关注。该文档版权归整理…