排序方法之标准库中的快排 qsort ()函数
C标准库qsort()函数的用法(快排)
使用快速排序例程进行排序
头文件:stdlib.h
用 法: void qsort(void *base, int nelem, int width, int (*fcmp)(const void*,const void *));
参数: 1 待排序数组首地址
2 数组中待排序元素数量
3 各元素的占用空间大小
4 指向函数的指针,用于确定排序的顺序
其中comp函数应写为:
int comp ( const void *a, const void *b )
{
return * ( int * ) a - * ( int * ) b;
}
上面是由小到大排序,return*(int *)b-*(int *)a; 为由大到小排序。
对一个二维数组进行排序:
int a[1000][2]; 其中按照a[0]的大小进行一个整体的排序,其中a[1]必须和a[0]一起移动交换。
qsort ( a, 1000, sizeof ( int ) * 2, comp);
int comp ( const void *a, const void *b )
{
return ( ( int * ) a ) [0] - ( ( int * ) b ) [0];
}
qsort函数代码示例
#include<stdio.h>
#include<stdlib.h>
#define nmemb 7
int compar(const void *a,const void *b)
{
//返回负数表示从达到小排列
//返回正数表示从达到小排列
int *aa =(int *)a,*bb=(int *)b;
printf("%d\n%d",*aa,*bb);
if(*aa > *bb) return 1;
if(*aa == *bb) return 0;
if(*aa < *bb) return -1;
return 1;
}
int main()
{
int a[10]={10,9,6,3,8};
int i=0;
qsort(a,10,sizeof(int ),compar);
for( i=0;i<10;i++)
printf("%d\t",a[i]);
return 0;
}
运用此函数还可以实现结构体和字符串的排序,在这里就不写了,百度上可以找到很多这样的例子啊!
排序方法之标准库中的快排 qsort ()函数的更多相关文章
- STL笔记(6)标准库:标准库中的排序算法
STL笔记(6)标准库:标准库中的排序算法 标准库:标准库中的排序算法The Standard Librarian: Sorting in the Standard Library Matthew A ...
- stm32存储器映像和标准库中定义外设地址的方法
结合存储器映像理解stm32标准库中定义外设地址的方法. stm32f103zet6是32位的.它所能访问的地址空间范围为2^32=4GB,把4GB分为8个block,分别为block0-block- ...
- Python 标准库中的装饰器
题目描述 1.简单举例 Python 标准库中的装饰器 2.说说你用过的 Python 标准库中的装饰器 1. 首先,我们比较熟悉,也是比较常用的 Python 标准库提供的装饰器有:property ...
- (转)python标准库中socket模块详解
python标准库中socket模块详解 socket模块简介 原文:http://www.lybbn.cn/data/datas.php?yw=71 网络上的两个程序通过一个双向的通信连接实现数据的 ...
- c/c++标准库中的文件操作总结
1 stdio.h是c标准库中的标准输入输出库 2 在c++中调用的方法 直接调用即可,但是最好在函数名前面加上::,以示区分类的内部函数和c标准库函数. 3 c标准输入输出库的使用 3.1 核心结构 ...
- php标准库中的优先队列SplPriorityQueue怎么使用?(继承)
php标准库中的优先队列SplPriorityQueue怎么使用?(继承) 一.总结 1.new对象,然后通过insert方法和extract方法来使用,top方法也很常用. 2.类的话首先想到继承, ...
- php标准库中QplQueue队列如何使用?
php标准库中QplQueue队列如何使用? 一.总结 1.new对象,然后通过enqueue方法和dequeue方法使用. 二.php标准库中QplQueue队列如何使用? 队列这种数据结构更简单, ...
- 标准库中的装饰器 lru_cache和全新的 singledispatch
Python 内置了三个用于装饰方法的函数:property.classmethod 和 staticmethod. 另一个常见的装饰器是 functools.wraps,它的作用是协助构建行为 良好 ...
- 用CAS操作实现Go标准库中的Once
Go标准库中提供了Sync.Once来实现"只执行一次"的功能.学习了一下源代码,里面用的是经典的双重检查的模式: // Once is an object that will p ...
随机推荐
- Oracle EBS-SQL (WIP-13):检查任务组件未选MRP净值.sql
select WE.WIP_ENTITY_NAME 任务号, MFG_LOOKUPS_WJS. ...
- 关于Program Size
Program Size: Code=86496 RO-data=9064 RW-data=1452 ZI-data=16116 Code是代码占用的空间,RO-data是 Read Only 只读常 ...
- 转载文章:Windows Azure 基础结构服务上的 Microsoft Dynamics NAV 和 Microsoft Dynamics GP!
Windows Azure 基础结构服务(虚拟机和虚拟网络)可提供按需基础结构,该基础结构可进行伸缩以适应不断变化的业务需求.无论您是在虚拟机中创建新应用程序,还是运行现有应用程序,我们都将按分钟收费 ...
- linux下监视进程 崩溃挂掉后自动重启的shell脚本
如何保证服务一直运行?如何保证即使服务挂掉了也能自动重启?在写服务程序时经常会碰到这样的问题.在Linux系统中,强大的shell就可以很灵活的处理这样的事务. 下面的shell通过一个while-d ...
- C# webservice开发
一.Webservice简介Web Service也叫XML Web Service. Web Service是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量 ...
- 获取xml文件
<?xml version="1.0" encoding="utf-8" ?><ArrayOfSystemRool xmlns:xsi=&qu ...
- SqlServer之表变量和临时表
表变量: 表变量创建的语法类似于临时表,区别就在于创建的时候,必须要为之命名.表变量是变量的一种, 表变量也分为本地及全局的两种,本地表变量的名称都是以"@"为前缀,只有在本地当前 ...
- CentOS 7解决Local Time与实际时间相差8小时问题
通过date -s “2014-12-06 15:00:00”以及timedatectl set-time “2014-12-06 15:00:00” ,以及ntp等方式均知识临时有效,苦恼了我半天. ...
- 通过url给action传中文参数乱码解决方案
比如: http://localhost:8080/projectName/dutyCondition.action?admitstate=0¤tStep=我的博客 传到后台的时候 ...
- Web 应用性能提升 10 倍的 10 个建议
转载自http://blog.jobbole.com/94962/ 提升 Web 应用的性能变得越来越重要.线上经济活动的份额持续增长,当前发达世界中 5 % 的经济发生在互联网上(查看下面资源的统计 ...