IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> qsort函数详解 -> 正文阅读

[数据结构与算法]qsort函数详解

目录

整型数组排序

?浮点型数组排序:

结构体排序:

?按年龄排:

?按名字拼音排:


c库函数——qsort

是<stdlib.h>的一个库函数,作用是对数组进行排序。

  • base?-- 指向要排序的数组的第一个元素的指针。
  • nitems?-- 由 base 指向的数组中元素的个数。
  • size?-- 数组中每个元素的大小,以字节为单位。
  • compar?-- 用来比较两个元素的函数。

?compar函数要自己写,里面对两个元素进行比较,

第一个大于第二个返回1

第一个等于第二个返回0

第一个小于第二个返回-1

?qsort函数没有返回值

?例子:

整型数组排序

#include<stdio.h>
#include<stdlib.h>
int compar(const void* e1, const void* e2)
{
	return (*(int*)e1 - *(int*)e2);
}

int main()
{
	int arr[10] = { 9,8,7,6,5,4,3,2,1,0 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	qsort(arr, sz, sizeof(arr[0]), compar);
	int j = 0;
	for (j = 0; j < sz; j++)
	{
		printf("%d ", arr[j]);
	}

输出结果:

?浮点型数组排序:

#include<stdio.h>
#include<stdlib.h>
int compar(const void* e1, const void* e2)
{
	return (*(int*)e1 - *(int*)e2);
}

int main()
{
	float arr[10] = { 9.0,8.0,7.0,6.0,5.0,4.0,3.0,2.0,1.0,0.0 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	qsort(arr, sz, sizeof(arr[0]), compar);
	int j = 0;
	for (j = 0; j < sz; j++)
	{
		printf("%0.2f ", arr[j]);
	}
}

?输出结果:

结构体排序:

?按年龄排:

#include<stdio.h>
#include<stdlib.h>
struct Stu
{
	char name[20];
	int age;

};
int compar(const void* e1, const void* e2)
{
	return(((struct Stu*)e1)->age - ((struct Stu*)e2)->age);
}
int main()
{	
	struct Stu s[3] = { {"张三",20},{"李四",45},{"王五",15} };
	int sz = sizeof(s) / sizeof(s[0]);
	qsort(s, sz, sizeof(s[0]), compar);
	int j = 0;
	for (j = 0; j < sz; j++)
	{
		printf("%s,%d   ",s[j].name,s[j].age);
	}
}

?输出结果:

?按名字拼音排:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct Stu
{
	char name[20];
	int age;

};
int compar(const void* e1, const void* e2)
{
	return  strcmp(((struct Stu*)e1)->name ,((struct Stu*)e2)->name);
}
int main()
{	
	struct Stu s[3] = { {"张三",20},{"李四",45},{"王五",15} };
	int sz = sizeof(s) / sizeof(s[0]);
	qsort(s, sz, sizeof(s[0]), compar);
	int j = 0;
	for (j = 0; j < sz; j++)
	{
		printf("%s,%d   ",s[j].name,s[j].age);
	}
}

?输出结果:

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-10-30 12:45:07  更:2021-10-30 12:45:20 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 9:47:30-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码