新手快速上手掌握基础排序<二>快速排序快速入门

目录

引言 

一:快速排序qsort的简介

1.qsort是一个库函数

2.库函数的查询了解方法

3.qsort的具体使用方法 

4.qsort函数使用的一些注意点 

5.qsort函数的特点

6.代码实现

(1)整数数组的快速排序

(2)结构体的快速排序(学号和姓名两种)

7.感谢观看 


听说看到日落金山的人,接下来的日子会顺顺利利,万事胜意,生活明朗-----------林辞忧

引言 

在了解基本的冒泡法,选择法之后,我们知道这两种方法只能排序单一类型数据,如果是多种类型的话,则感到无力,接下来我们将介绍一种更高效的方法---快速排序qsort

一:快速排序qsort的简介

1.qsort是一个库函数
2.库函数的查询了解方法

使用cpplusplus,c/c++官方网站

3.qsort的具体使用方法 

  

4.qsort函数使用的一些注意点 

由上面得知

void qsort(void *base, //指向需要排序的数组的第一个元素

size_t num,//排序的元素个数

size_t size //一个元素的大小,单位是字节

int (*cmp)(const void *p1,const void *p2)//函数指针类型--这个函数指针指向的函数,能够比较base指向数组中的两个元素

特别注意:void *的指针为无具体类型的指针,可以接收任意类型的地址,不能直接解引用的,也不能直接进

行指针计算的需要强制转换为需要的类型

5.qsort函数的特点

(1)快速排序的方法

(2)适合于任意类型数据的排序

(3)默认是升序排序

6.代码实现
(1)整数数组的快速排序
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#define N 5
int com(const void* p1, const void* p2)
{return (*(int*)p1 - *(int*)p2);//降序的话则改为 return (*(int*)p2-*(int*)p1);
}
int main()
{int a[N] = { 0 };int i = 0;for (i = 0; i < N; i++){scanf("%d", &a[i]);}qsort(a, N, sizeof(a[0]), com);for (i = 0; i < N; i++){printf("%d ", a[i]);}return 0;
}

  

降序排序的话则如上改动就行 

(2)结构体的快速排序(学号和姓名两种)

#include <stdio.h>
#include <stdlib.h>
#define N 3
struct Student
{int num;//学号char name[20];//姓名
};
int com_num(const void* p1, const void* p2)
{return ((struct Student *)p1)->num-((struct Student *)p2)->num;
}
int main()
{struct Student s[N];int i = 0;for (i = 0; i < N; i++){scanf("%d%s", &s[i].num, s[i].name);}qsort(s, N, sizeof(s[0]), com_num);//学号比较for (i = 0; i < N; i++){printf("%5d%8s\n", s[i].num, s[i].name);}return 0;
}

 程序结果为


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 3
struct Student
{int num;//学号char name[20];//姓名
};
int com_name(const void* p1, const void* p2)
{return strcmp(((struct Student*)p1)->name, ((struct Student*)p2)->name);
}
int main()
{struct Student s[N];int i = 0;for (i = 0; i < N; i++){scanf("%d%s", &s[i].num, s[i].name);}qsort(s, N, sizeof(s[0]), com_name);//姓名比较for (i = 0; i < N; i++){printf("%5d%8s\n", s[i].num, s[i].name);}return 0;
}

程序运行结果为 

7.感谢观看 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NumPy 中级教程——线性代数操作

Python NumPy 中级教程&#xff1a;线性代数操作 NumPy 提供了丰富的线性代数操作功能&#xff0c;包括矩阵乘法、行列式计算、特征值和特征向量等。这些功能使得 NumPy 成为科学计算和数据分析领域的重要工具。在本篇博客中&#xff0c;我们将深入介绍 NumPy 中的线性代数操作…

使用.Net nanoFramework 驱动ESP32的OLED显示屏

本文介绍如何使用.Net nanoFramework 驱动ESP32的OLED显示屏。我们将会从最基础的部分开始&#xff0c;逐步深入&#xff0c;让你能够理解并实现整个过程。无论你是初学者还是有一定经验的开发者&#xff0c;这篇文章都会对你有所帮助。 1. 硬件准备 1.1 ESP32开发板 这里我们…

samba的基础运用和配置

#主页传送门&#xff1a;江南的江 #每日鸡汤&#xff1a;落魄不是你吃不上饭&#xff0c;不是没人理你。只是你一方面在意别人的目光&#xff0c;另一方面却不清楚自己的方向在哪里。 #music 推荐&#xff1a;没有理想的人不伤心(新裤子) #初心和目标&#xff1a;在网络安全搞出…

解除mobaxterm会话14个限制

参考&#xff1a; https://www.jianshu.com/p/a40cbf068934 下载代码&#xff1a; git clone https://github.com/redrose2100/MobaXterm-keygen.git 查看当前系统用户名 查看mobaxterm版本号 执行&#xff1a; python MobaXterm-Keygen.py Administrator 20.2将生成的 Cust…

PyTorch的Tensor(张量)

一、Tensor概念 什么是张量&#xff1f; 张量是一个多维数组&#xff0c;它是标量、向量、矩阵的高维拓展 Tensor与Variable Variable是torch.autograd中的数据类型&#xff0c;主要用于封装Tensor&#xff0c;进行自动求导。 data: 被包装的Tensorgrad: data的梯度&…

基于OpenCv的车道检测

项目背景和步骤 车道检测是自动驾驶领域不可或缺的一环 具体步骤如下&#xff1a; 一、将图像灰度化&#xff0c;并进行适度的高斯滤波&#xff0c;剔除干扰 二、利用Canny边缘检测&#xff0c;检测出车道和其它物体的边缘 三、使用ROI区域截取&#xff0c;截取需要的部分&a…

Debian安装k8s记录

Debian安装k8s记录 在master和node上安装kube安装master安装node遇到的问题汇总1、kubelet.service报错 failed to pull image "registry.k8s.io/pause:3.6"2、node重启后报错&#xff0c;failed: open /run/flannel/subnet.env: no such file or directory 在master…

AI与数字化映像:颜值开端,功能至上_光点科技

在人工智能的浪潮中&#xff0c;AI数字人的兴起正成为一个不可忽视的现象。随着ChatGPT等生成式AI算法的进步&#xff0c;AIGC&#xff08;人工智能生成内容&#xff09;的应用呈现出爆发性增长&#xff0c;不仅在技术圈引起广泛关注&#xff0c;也为元宇宙及其相关产业链带来了…

[实践总结] 通过累加求和来学习 分支/合并框架

分支/合并框架 分支/合并框架的目的是以 递归方式将可以并行的任务拆分成更小的任务&#xff0c;然后将每个子任务的结果合并起来生成整体结果。 它是ExecutorService接口的一个实现&#xff0c;它把子任务分配给线程池&#xff08;称为ForkJoinPool&#xff09;中的工作线程。…

关于 android 热更新技术

Android应用实现热更新&#xff08;也称为动态更新或增量更新&#xff09;是指在不通过Google Play或其他应用市场重新发布完整APK包的情况下&#xff0c;应用能够从远程服务器下载并安装部分代码或资源文件以修复bug或增加新功能。这一机制提高了用户体验和产品迭代速度。以下…

循环业务异常外部处理导致的问题

问题描述&#xff1a; 在业务执行循环中&#xff0c;异常捕捉处理在循环外。当循环中的某个业务执行异常时&#xff0c;会影响后续业务的执行&#xff0c;因为没有采取相应措施来处理该异常并继续循环执行。 以下是示例代码&#xff0c;演示了在循环中执行多个业务操作并在异…

头歌:旅游网站大数据分析 - 数据抓取

package step1; import java.io.File; import java.io.IOException; import org.jsoup.Jsoup; import org.jsoup.nodes.Document;public class Task {/*** param filePath 文件路径&#xff1a;backups/www.ctrip.com.txt/* return* throws IOException*/public Document getHt…

小白入门java基础-反射详解

一&#xff1a;介绍 Java 是由 Sun Microsystems 公司于 1995 年 5 月推出的高级程序设计语言。 Java 可运行于多个平台&#xff0c;如 Windows, Mac OS 及其他多种 UNIX 版本的系统。Java语言编写的程序&#xff0c;在一次编译后&#xff0c;可以在多个系统平台上运行。 主…

ajax请求的详细流程+详细示例

AJAX&#xff08;Asynchronous JavaScript and XML&#xff09;是一种用于创建异步 Web 应用程序的技术。下面是 AJAX 请求的详细流程&#xff1a; 创建 XMLHttpRequest 对象&#xff1a;在 JavaScript 代码中&#xff0c;使用 new XMLHttpRequest() 创建一个 XMLHttpRequest 对…

Linux常用命令总结

1.系统查看 2.网络相关 2.1 设置静态网络 [rootlocalhost Desktop]# ifconfig eth1 Link encap:Ethernet HWaddr 00:0C:29:B1:24:A1通过ifconfig以上信息主要得到 eth0 还是eth1;还有HWaddr,1) 需要Vmware中的"使用本次DHCP"服务将IP地址分配给虚拟机关闭 2)…

Spring Boot笔记1

1. SpringBoot简介 1.1. 原有Spring优缺点分析 1.1.1. Spring的优点分析 Spring是Java企业版&#xff08;Java Enterprise Edition&#xff0c;javeEE&#xff09;的轻量级代替品。无需开发重量级的Enterprise JavaBean&#xff08;EJB&#xff09;&#xff0c;Spring为企业…

Bmp2Png是什么工具?好用吗?

Bmp2Png是什么工具&#xff1f;好用吗&#xff1f; 批量BMP图片转为PNG透明图片&#xff0c;去掉BMP黑色背景&#xff0c;压缩导出png图片V1.1前段时间上传了一款bmp转png并去黑底的demo软件&#xff0c;非常受欢迎&#xff0c; 上一版本地址&#xff1a;批量BMP图片转为PNG…

计算机网络 (期末救命版)

文章目录 Ⅰ 网络概述1. 互联网概述与组成2. 计算机网络的类别3. 计算机网络的性能指标4. 计算机网络体系结构 Ⅱ 物理层1. 物理层的任务2. 信道复用技术 Ⅲ 数据链路层1. 点对点信道2. 基本问题3. 点对点协议 PPP4. 使用广播信道的数据链路层 Ⅳ 网络层1. 网络层的服务2. 网际…

解算人生--写于2023跨年之夜

最近买了一本书&#xff0c;书名叫《计算》 读了部分内容&#xff0c;虽然理解上还需要再下下功夫&#xff0c;但是直观的感觉冲击还是挺大的&#xff0c;最明显的就是表面与本质的把握。大家可能都有这样一种感觉&#xff0c;初步涉足某一领域时&#xff0c;开始我们都会被大量…

Pytorch深度学习-----完整的模型验证套路

系列文章目录 PyTorch深度学习——Anaconda和PyTorch安装 Pytorch深度学习-----数据模块Dataset类 Pytorch深度学习------TensorBoard的使用 Pytorch深度学习------Torchvision中Transforms的使用(ToTensor,Normalize,Resize ,Compose,RandomCrop) Pytorch深度学习-----…