首页 > 知识库 > 正文

qsort是什么技术 qsort怎么样

编译器函数库自带的快速排序函数。使用qsort()排序并用 bsearch()搜索是一个比较常用的组合,使用方便快捷。qsort 的函数原型是void qsort(void*base,size_t num,size_t width,int(__cdecl*compare)(const void*,const void*));各参数:1 待排序数组首地址 2 数组中待排序元素数量 3 各元素的占用空间大小 4 指向函数的指针基本信息 中文名:qsort 英文名:qsort

函数简介

功 能: 使用快速排序例程进行排序

头文件:stdlib.h

用 法:_CRTIMP void __cdecl qsort(void*, size_t, size_t,int (*)(const void*, const void*));  

参数: 1 待排序数组首地址

2 数组中待排序元素数量

3 各元素的占用空间大小

4 指向函数的指针,用于确定排序的顺序

举例

#include <stdlib.h>

#include <string.h>

#include <stdio.h>

int compare( const void *arg1, const void *arg2 );

int main( int argc, char **argv ) {

int i; /* Eliminate argv[0] from sort: */

argv++; argc--; /* Sort remaining args using Quicksort algorithm: */

qsort( (void *)argv(size_t)argc, sizeof( char * ), compare ); /* Output sorted list: */

for( i = 0; i < argc; ++i )

printf( " %s", argv[i] );

printf( "" );

}

int compare( const void *arg1, const void *arg2 ) { /* Compare all of both strings: */

return _stricmp( * ( char** ) arg1, * ( char** ) arg2 );

}

用法

其中base是排序的一个集合数组,num是这个数组元素的个数,width是一个元素的大小,comp是一个比较函数。

比如:对一个长为1000的数组进行排序时,int a[1000]; 那么base应为a,num应为 1000,width应为 sizeof(int),comp函数随自己的命名。

qsort(a,1000,sizeof(int),comp);

其中comp函数应写为:

上面是由小到大排序,return *(int *)b - *(int *)a; 为由大到小排序。

MSDN:

The qsort function implements a quick-sort algorithm to sort an array of num elements, each of width bytes. The argument base is a pointer to the base of the array to be sorted. qsort overwrites this array with the sorted elements. The argument compare is a pointer to a user-supplied routine that compares two array elements and returns a value specifying their relationship. qsort calls the compare routine one or more times during the sort, passing pointers to two array elements on each call:

以下为compare函数原型 //comp

compare( (void *) & elem1, (void *) & elem2 );

Compare 函数的返回值 描述
< 0 elem1将被排在elem2前面
0 elem1 等于 elem2
> 0 elem1 将被排在elem2后面

对一维数组的排序实例(从小到大排序):

对一个二维数组进行排序:

int a[1000][2]; 其中按照a[0]的大小进行一个整体的排序,其中a[1]必须和a[0]一起移动交换。//即第一行和第二行(a[0]和a[1]分别代表第一行和第二行的首地址)。使用库函数排序的代码量并不比用冒泡排序法小,但速度却快很多。

对字符串进行排序

按结构体中某个关键字排序(对结构体一级排序):

按结构体中多个关键字排序(对结构体多级排序)[以二级为例]:

对结构体中字符串进行排序:

计算几何中求凸包的Comp

相关图片

相关图片

qsort

qsort

qsort

qsort

声明:本网内容收集自互联网,旨在传播知识仅供参考,不代表本网赞同其观点,文字及图片版权归原网站所有。

更多精彩内容推荐:

你在无意中看到过什么不该看到的事情?

我也说一个我大概18-19岁的时候,邻居家亲戚一个25-6岁的大姐姐,他男朋友不是我们这的,每次他男朋友来看他,他的一个堂弟弟都找我去他家的后园子里趴窗户,他姐姐躺着男朋友拿个筷子在那捅咕,也不知道在找什么,过了一会儿又弄个黄瓜出来上面湿露露的他男朋友还咬了一口,在后来他弟弟踩到...

金星第一任的妻子如今生活如何?

金星的“毒舌”是圈内人人皆知的,而网友对金星的评价也是两极化,有人认为金星敢说真话,值得尊敬,也有人人她是哗众取宠。但无论怎样,金星的魄力和胆量还是值得肯定,她敢于走不寻常之路,也敢于去做一些别人不敢之事。金星自幼热爱舞蹈,希望成为女儿身。金星原本是一个男人,但是自幼热爱舞蹈,尤...

胆结石吃什么可以化掉?

胆结石按所含成分可分为以下三类:胆固醇结石:由于胆汁中所含的胆固醇过多.溶解不掉而逐渐沉积.单发者居多.质地坚硬.呈圆形或椭圆形.结石内约含胆固醇98%.外观呈淡黄色或灰黄色.表面光滑。胆色素结石.是我国最多见的一种结石.形状不定.质软易碎.剖面无核心或分层.称[ 东方型结石"....

张姓家谱辈分是怎么排列的?

欢迎打开历史宝藏。张姓作为我国目前的三大姓之一,有着悠久的历史。而字辈也是一个姓氏流传的一个重要标志,在张姓发展的漫长历史时期,产生了无数的分支,很多大点的分支,都有自己编订的字辈。例如河南台前桥北张也就是张公艺遗址支系,其辈排序为:“兴玉传继广,北宪庆繁祥,兰秀桂荣茂,逢春生贤...

男人湿气重,怎么排湿?

作为六邪气之首的湿气,近些年备受关注,主要是湿气重降低人们生活质量,而且也容易同其他疾病“勾结”生成新的疾病,如同寒结合成为湿寒,同风结合成为风湿。所以,针对湿气应是早发现早治疗,这样才能趁轻快速治好。右上角关注帮忙点一下,每天推送有意思有知识的文章给您!男性湿气重的表现有哪些?...

手麻是怎么回事?

手是人体的一个重要器官,如果有不舒服的地方,也会影响正常的身体健康。有的时候你会觉得手一阵麻木。可能过一段时间就又好了。但是如果长时间,或者经常性地出现手麻的情况,那就要注意了。手麻有两种情况,一种是生理性手麻。另外一种就是病理性手麻。生理性手麻主要是长时间压迫手,导致手部穴位受...

那些被判无期的人每天在监狱里做什么?

我们大多数人每天基本都是重复性跟昨天一样的工作,尤其是那些上班族。每天都在为自己的生活奔波着,操劳着,其实我也一样,但是今天跟朋友聊天时突然提起这样的一个问题“那些被判无期徒刑的人每天在监狱里做什么?”瞬间引起了我们的兴趣。在我们一番讨论之下还是没有一个靠谱的结果,所以不得不求助...

寿命短的人,往往身体4处“比较低”,指的是哪里?

疾病是寿命最大的“绊脚石”。如果,人生是一场旅行,那么肠胃、肿瘤、心脏疾病等,就是这一路上的磕磕绊绊。有人一路平坦,没病没灾,寿命很长;有人半路被肿瘤绊倒,退出了人生旅程。那么能够了解自己的身体情况,并且对于健康有一些认识,才能够离长寿更进一步!寿命短的人,身体往往4处比较低,指...

肝出问题了,头发会有哪些表现?

肝出问题了,头发会有哪些表现呢?肝脏在中医里面,是发挥疏泄功能,能够使我们全身的气机通调舒畅,并且肝还有藏血的功能。所以是我们人体十分重要的内脏。而在西医里面,大家都知道肝脏是有解毒的功能。那么如果肝出问题了,我们的头发会有哪些表现呢?第一:头发油腻,油脂较多正常人头发并不会刚洗...

山西阳泉据说要建高铁,那阳泉北站怎么办?

石太客专线出石家庄站后沿京广线运行一段后向西北越过正太线抛弃阳泉站经井陉矿区-阳泉北站-阳曲-太原站,相当于在阳泉北面划了个大的反U型锅底,要比直接从京广线向西直奔太原南多走行近百公里,为何如此设计?山西现在缺一条贯穿东西辐射西北的高铁,若能修建一条“石家庄站——阳泉南站(平定)...

面对病人的隐私部位,护士都是怎么避免尴尬的?

这种问题应该只存在于非医学专业的人。其实对于我们学医的人来说,这种情况还是很常见的,尤其有些需要给病人做全麻手术时,泌尿外科的女医生和护士给男病人做检查和手术时,妇产科的男医生给女病人做检查和治疗时,还有做肠镜时等等,这些情况经常都会暴露患者的隐私部位。但作为医护人员来说,暴露病...

你有哪些特别搞笑的生理反应?

高一吧,有个很喜欢的女孩子,其实就是互相都知道我喜欢他,她喜欢我,其实有无数次机会两个人都可以互相表达自己的想法,但是都害羞,都没有说出来,说害羞吧!都愿意给对方机会,反正现在看来就是瞎子都知道那两个人是什么关系,但是事实上就是两个是真的没有关系,没有过多的身体,真真的青涩的暗恋...

发生过关系的人还能做朋友吗?你怎么看?

发生过关系的人还能做朋友吗?你怎么看?要回答这个问题我们首先来看看,发生过关系的男女和没有发生过关系的男女之间有什么不一样?其次,发生过关系的男女为什么不能再做朋友了?其三,发生过关系的男女再做朋友会发生什么?最后,对于这样的关系你怎么看?1、发生过关系的男女和没有发生过关系的男...

作为一名男科女护士是什么样的体验?

男科女护士是什么样的体验?...

情侣之间多久发生亲密关系才算正常?

记得看过一个科学研究上说过,情侣之间呢!最好是越晚发生性关系的那种感情会越好的,更不容易在一起吵架的。现在很多人认为爱一个人就要给他性爱,因此呢,现在有很多都是一夜情,甚至与刚认识两天就发生了关系的现象比比皆是,这种现象在大城市很普遍的,但我认为这种关系是不利于以后感情的发展的。...

Q开头单词技术英文单词英语计算机技术yuxinboypancx2008xcvksaodifpuaosdxjq21268Kotomine我有一点点
猜你喜欢
热门推荐
今日推荐 更多
猜你喜欢