qsort 快排函数(C语言)

函数原型

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

头文件

#include<stdlib.h>
  • base :要进行排序数组的地址。
  • nitems :数组中元素的个数。
  • size:数组每个元素的大小(以字节为单位)。
  • compar:比较函数。参数是一个指针,指向比较函数。

返回值

无返回值。

比较函数

int cmp(const void* a, const void* b);//const void * :是一个万能的指针,可以强制转化成为任意类型的指针。
//我们在编写函数的时候应该将这两个参数强制转化为我们需要的类型

返回值

返回值为 int 类型。

如果为负数则*a 在 *b之前。

如果返回值为正则*a 在 *b 之后

如果为0,不定。

样例

#include<stdio.h>
#include<string.h> int cmp(const void* a, const void* b)//const void* a是指所指向的值*a不可以改变,而a就是一个指针变量。
{
int* m = (int*)a; //将指针a强制转化为int 指针类型。
int* n = (int*)b;
return *m - *n; //对指向的值的大小进行比较
}
int main()
{
int t[10] = { 8 ,9,1,4,7,6,3,2,1,7 };
qsort(t, 10, sizeof(int), cmp);
for (int i = 0;i < 10;i++)
printf("%d ", t[i]);
}

输出结果

1 1 2 3 4 6 7 7 8 9

qsort 快排函数(C语言)的更多相关文章

  1. poj1007 qsort快排

    这道题比较简单,但通过这个题我学会了使用c++内置的qsort函数用法,收获还是很大的! 首先简要介绍一下qsort函数. 1.它是快速排序,所以就是不稳定的.(不稳定意思就是张三.李四成绩都是90, ...

  2. C语言中使用系统自带的快排函数

    题目 . 德才论 () 宋代史学家司马光在<资治通鉴>中有一段著名的"德才论":"是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人.凡取 ...

  3. STL函数库的应用第二弹——快排sort函数与结构体关键字排序

    时隔20多天,本蒟蒻终于记起了他的博客园密码!!! 废话不多说,今天主题:STL快排函数sort()与结构体关键字排序 Part 1:引入和导语 首先,我们需要知道,algorithm库里有一些奇怪的 ...

  4. JS实现快排

    /*采用快排的方法排序,取第一个值为轴对数组进行分割排序,不断迭代后实现数组的排序*/ //定义分割函数 function partF(A,low, high){ var temp = A[low]; ...

  5. 排序 之 快排、归并、插入 - <时间复杂度>----掌握思想和过程

    俗话说:天下武功无坚不破,唯快不破.对于算法当然也是要使用时间最短.占用空间最小的算法来实现了. 注意:我代码里面打的备注仅供参考,建议不要背模板(因为没有固定的模板),可以写一个数列按着代码跑两圈或 ...

  6. hdu1157 快排

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=1157 大意:排序,取中间数. PS:1.自己实现了下快排函数,也可以使用#include<algor ...

  7. <泛> 多路快排

    今天写一个多路快排函数模板,与STL容器兼容的. 我们默认为升序排序 因为,STL容器均为逾尾容器,所以我们这里采用的参数也是逾尾的参数 一.二路快排 基本思路 给你一个序列,先选择一个数作为基数,我 ...

  8. 排序方法之标准库中的快排 qsort ()函数

    C标准库qsort()函数的用法(快排) 使用快速排序例程进行排序 头文件:stdlib.h 用 法: void qsort(void *base, int  nelem, int  width, i ...

  9. c语言中使用自带的qsort(结构体排序)+ 快排

    c中没有自带的sort函数emm 不过有自带的qsort函数 (其实用法都差不多(只是我经常以为c中有sort 头文件要用 #include <stdlib.h> 一定要重新把指针指向的值 ...

随机推荐

  1. idea快捷键:查找类中所有方法的快捷键

    查找类中所有方法的快捷键 第一种:ctal+f12,如下图 第二种:alt+7,如下图

  2. 微信小程序:标签字符串直接变成标签来显示要通过富文本技术

    rich-text标签存在nodes属性直接接受标签字符串

  3. 微信小程序:快速生成less文件类嵌套的结构

    全部选中标签结构,按住ctrl+shift+p,选中插件Generate CSS tree(提前安装CSS Tree),先删除undefined,将img替换成image,删除标签名view. 完整的 ...

  4. 使用gitlab构建基于docker的持续集成(一)

    使用gitlab构建基于docker的持续集成(一) gitlab docker aspnetcore 持续集成 开篇 整体环境规划 准备工作 CA证书 虚拟机系统:安装Centos7.3 3.设置C ...

  5. PID算法验证

    算法: struct PID { float kp; float kpnfac; float ki; float kinfac; float kd; }; float gCurPPM = 1300; ...

  6. 华硕主板开机无法进入BIOS

    先说下本人情况,自己组装的台式机,华硕TUF B550M-Plus (wifi)的主板,CPU是锐龙 4650G(带核显),其他配件不涉及问题就不提了. 原来用独显的时候,没啥问题,开机有品牌logo ...

  7. 小程序setData中key用变量

    Page({ data:{ //类型列表 lastRootList:0,//上次点击的类型 rootList:[{name:'服饰箱包',selectClass:'root-active',iconC ...

  8. mongoDB服务器连接不上Error: couldn't connect to server 127.0.0.1:27017, connection attempt failed: SocketException:

    一大早打开node项目就报错,终端报 UnhandledPromiseRejectionWarning: MongooseServerSelectionError: connect ECONNREFU ...

  9. rest framework parsers

    解析器 机交互的Web服务更倾向于使用结构化的格式比发送数据格式编码的,因为他们发送比简单的形式更复杂的数据 -马尔科姆Tredinnick,Django开发组 REST框架包含许多内置的解析器类,允 ...

  10. Hibernate在oracle中ID增长的方式(续)

    引用链接:http://blog.csdn.net/w183705952/article/details/7367272 第二种:设置ID的增长策略是native,但是需要创建一个名字为hiberna ...