C语言快排模板 qsort();函数应用

2024-04-25 03:08

本文主要是介绍C语言快排模板 qsort();函数应用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

///快速排序模板///

//转载编程学习笔记的博客,源地址请点击,感谢”编程学习笔记“博主的辛勤付出。

//部分验证,推理得出。内容基本可靠!

int/char/float/double整形数组的快排/

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

int cmp(const void *p,const void *q)//该函数进行的是升序快排,如果想要进行降序快排,则将1和-1调换即可

{

return *(元素类型 *)p>*(元素类型 *)q?1:-1;//根据元素的值进行排序

}

int main()

{

元素类型 str[V]; //V为数组大小

          qsort(strcntsizeof(num[0]), cmp);//元素类型型数组str[ ]进行快排//cnt为要排的元素的个数

}

///

///对结构体某元素的快排

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

int cmp(const void *p, const void *q);//声明函数

struct ln

{

          int data;

          int score;

          int math;

}ss[V];//V为数组大小

int main()

{

          qsort(ss, cnt sizeof(struct ln), cmp);//对结构体ss进行快排//cnt为要排的元素的个数

}

int cmp(const void *p,const void *q)//该函数进行的是升序快排,如果想要进行降序快排,则将1和-1调换即可

{

    return (*(struct ln*)p).data>(*(struct ln*)q).data?1:-1;//根据结构体中data的值进行排序

 

}//一级结构体排序

 

int cmp(const void *p,const void *q)//该函数进行的是升序快排,如果想要进行降序快排,则将1和-1调换即可

{

if((*(struct ln*)p).data==(*(struct ln*)q).data)//结构体中data的值相等

return (*(struct ln*)p).score>(*(struct ln*)q).score?1:-1;//根据结构体中score的值进行排序

 

else

     return (*(struct ln*)p).data>(*(struct ln*)q).data?1:-1;//根据结构体中data的值进行排序

 

}//二级结构体排序

 

//多级结构体以此类推

///

//结构体重字符串的快排///

#include <stdio.h>

#include<string.h>
#include<stdlib.h>

struct ln

{

int data;

char ch[v];//v为数组大小

}ss[V];//V为数组大小

int cmp(const void *p,const void *q)

{

return strcmp((*(struct ln*)p).ch,(*(struct ln*)q).ch );

}

int main()

{

qsort(ss,cnt,sizeof(ss[0]),cmp);//对结构体ss按照结构体中字符串ch的字典顺序进行快排//cnt为要排的元素的个数

}

///

//注意事项/

1.根据实际操作发现qsort在排非常大(或非常小)的数(如<limits.h>中的INT_MAX(INT_MIN))时会失灵(不排这个数),原因暂不明,使用时要注意!

2.使用qsort应用.c编辑,不可用.cpp!

这篇关于C语言快排模板 qsort();函数应用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/933555

相关文章

C/C++错误信息处理的常见方法及函数

《C/C++错误信息处理的常见方法及函数》C/C++是两种广泛使用的编程语言,特别是在系统编程、嵌入式开发以及高性能计算领域,:本文主要介绍C/C++错误信息处理的常见方法及函数,文中通过代码介绍... 目录前言1. errno 和 perror()示例:2. strerror()示例:3. perror(

Kotlin 作用域函数apply、let、run、with、also使用指南

《Kotlin作用域函数apply、let、run、with、also使用指南》在Kotlin开发中,作用域函数(ScopeFunctions)是一组能让代码更简洁、更函数式的高阶函数,本文将... 目录一、引言:为什么需要作用域函数?二、作用域函China编程数详解1. apply:对象配置的 “流式构建器”最

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

Android Kotlin 高阶函数详解及其在协程中的应用小结

《AndroidKotlin高阶函数详解及其在协程中的应用小结》高阶函数是Kotlin中的一个重要特性,它能够将函数作为一等公民(First-ClassCitizen),使得代码更加简洁、灵活和可... 目录1. 引言2. 什么是高阶函数?3. 高阶函数的基础用法3.1 传递函数作为参数3.2 Lambda

C语言中的数据类型强制转换

《C语言中的数据类型强制转换》:本文主要介绍C语言中的数据类型强制转换方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C语言数据类型强制转换自动转换强制转换类型总结C语言数据类型强制转换强制类型转换:是通过类型转换运算来实现的,主要的数据类型转换分为自动转换

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

C语言实现两个变量值交换的三种方式

《C语言实现两个变量值交换的三种方式》两个变量值的交换是编程中最常见的问题之一,以下将介绍三种变量的交换方式,其中第一种方式是最常用也是最实用的,后两种方式一般只在特殊限制下使用,需要的朋友可以参考下... 目录1.使用临时变量(推荐)2.相加和相减的方式(值较大时可能丢失数据)3.按位异或运算1.使用临时

使用C语言实现交换整数的奇数位和偶数位

《使用C语言实现交换整数的奇数位和偶数位》在C语言中,要交换一个整数的二进制位中的奇数位和偶数位,重点需要理解位操作,当我们谈论二进制位的奇数位和偶数位时,我们是指从右到左数的位置,本文给大家介绍了使... 目录一、问题描述二、解决思路三、函数实现四、宏实现五、总结一、问题描述使用C语言代码实现:将一个整

Java中&和&&以及|和||的区别、应用场景和代码示例

《Java中&和&&以及|和||的区别、应用场景和代码示例》:本文主要介绍Java中的逻辑运算符&、&&、|和||的区别,包括它们在布尔和整数类型上的应用,文中通过代码介绍的非常详细,需要的朋友可... 目录前言1. & 和 &&代码示例2. | 和 ||代码示例3. 为什么要使用 & 和 | 而不是总是使