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. vue高级

    1.nrm nrm提供了一些最常用的npm包镜像地址,可以快速切换服务器地址下载资源.它只是提供了地址,并不是装包工具.如果没有安装npm,需要安装node,然后直接安装即可.node下载链接:htt ...

  2. Kubernetes-1.概述

    内容主要摘自官网文档资料 官方地址 概述Kubernetes基本信息 前提条件: 掌握容器或Docker知识 文档编写基于kubernetes v1.17版本 目录 概述 Kubernetes对象 K ...

  3. [UNP] TCP 多进程服务器

    UNP Part-2: Chapter 5. TCP Client/Server Example 的读书笔记. 阅读本文前,建议先阅读多线程服务器的实现,熟悉常见的 TCP 网络通信 API 的基本使 ...

  4. 剑指 Offer 29. 顺时针打印矩阵 + 蛇形矩阵 + 模拟 + 思维题

    剑指 Offer 29. 顺时针打印矩阵 Offer_29 题目描述: 题解分析: 题目的初衷是将这道题当做一个简单题处理 这道题一开始想的太复杂了,其实可以参考迷宫广度优先搜索的过程,只不过在选定一 ...

  5. c# float类型和double类型相乘出现精度丢失

    c# float类型和double类型相乘出现精度丢失 double db = 4.0; double db2 = 1.3; float f = 1.3F; float f2 = 4.0F; Deci ...

  6. Javascript学习,DOM对象,方法的使用

    JavaScript: ECMAScript: BOM: DOM: 事件 DOM的简单学习 功能:控制html文档内容 代码:获取页面标签(元素)对象和Element document.getElem ...

  7. 【转载】markdown数学常用公式箭头符号

    来源1:https://www.jianshu.com/p/3f01c5658356 来源2:https://blog.csdn.net/smstong/article/details/4434063 ...

  8. 01----python入门----python安装与初识

    ----python入门----python安装与初识 python是一门编程语言,作为学习python的开始,需要事先搞明白:编程的目的是什么?什么是编程语言?什么是编程? 这是一个很好的开头!但是 ...

  9. RocketMQ安装配置过程

    官网 官方网站:http://rocketmq.apache.org 下载源码包:https://www.apache.org/dyn/closer.cgi?path=rocketmq/4.8.0/r ...

  10. 一文搞懂 this、apply、call、bind

    码文不易,转载请带上本文链接,感谢~ https://www.cnblogs.com/echoyya/p/14506269.html 目录 码文不易,转载请带上本文链接,感谢~ https://www ...