用qsort排序
冒泡,快排都是常见的排序方法,这里介绍用头文件里的qsort函数排序。只是自己要先一个cmp函数。
#include<stdlib.h>//qsort的头文件
int a[100]={0,2,4,1,5,7,3,8,9}; //要排序的数组
struct Person//要排序的结构体
{
char num[20];
char name[100];
int score;
int sum;
double P;
}man[100];
1.给数组a[]排序
int cmp_1(const void *a,const void *b)//给数组a[]排序
{
return *(int *)a-*(int *)b;
} //函数的调用
qsort(a,N,sizeof(a[0]),cmp_1);//N为数组的大小,这里为9
</pre>2.按结构体里的 score排<pre class="cpp" name="code">int cmp_2(const void *a,const void *b)//按结构体里的 score排
{
return ((Person *)a)->score-((Person *)b)->score;
}
//函数调用
qsort(man,N,sizeof(man[0]),cmp_2);
</pre><pre class="cpp" name="code">3.按结构体里的P排序(注意是double型)
<pre class="cpp" name="code">int cmp(const void *a,const void *b)
{//从小到大排
return ((Person *)a)->P>((Person *)b)->P?1:-1;
}
4.先按sum排,假设sum相等再按score排
int cmp_3(const void *a,const void *b)//先按sum排,假设sum相等再按score排
{
struct Person *c=(Person *)a;
struct Person *d=(Person *)b;
if(c->sum!=d->sum)
return c->sum-d->sum;
else
return c->score-d->score;
}
//函数调用
qsort(man,N,sizeof(man[0]),cmp_3);
</pre><pre class="cpp" name="code">5.先按字符串num排,假设字符串num同样,再按字符串name排
int cmp_4(const void *a,const void *b)//先按字符串num排,假设字符串num同样,再按字符串name排
{
struct Person *c=(Person *)a;
struct Person *d=(Person *)b;
if(strcmp(c->num,d->num)!=0)
return strcmp(c->num,d->num);
else
strcmp(c->name,d->name);
}
//函数调用
qsort(man,N,sizeof(man[0]),cmp_4);
</pre><pre class="cpp" name="code">6.先按score排,假设score同样,再按字符串num排
<pre class="cpp" name="code">int cmp_5(const void *a,const void *b)//先按score排,假设score同样,再按字符串num排
{
struct Person *c=(Person *)a;
struct Person *d=(Person *)b;
if(c->score!=d->score)
return c->score-d->score;
else
return strcmp(c->num,d->num);
}
//函数调用
qsort(man,N,sizeof(man[0]),cmp_5);
用qsort排序的更多相关文章
- qsort排序算法
七种qsort排序方法 <本文中排序都是采用的从小到大排序> 一.对int类型数组排序 int num[100]; Sample: int cmp ( const void *a , ...
- sort和qsort排序
qsort(数组名,数组长度,数组中每个元素大小,compare); compare函数的写法决定了排序是升序还是降序.需要#include<stdlib.h> 例如: int compa ...
- qsort 排序功能 总结
qsort包括在<stdlib.h>头文件里.此函数依据你给的比較条件进行高速排序,通过指针移动实现排序. 排序之后的结果仍然放在原数组中.使用qsort函数必须自己写一个比較函数. 函数 ...
- Immediate Decodability UVA-644(qsort排序 + 模拟)
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> us ...
- 排序 | 冒泡排序的优化与qsort快速排序
冒泡排序 冒泡排序 Bubble_Sort,是极为简单的一种排序算法.虽然效率差一点,但好在具有结构简单,容易理解,易于操作等优点.冒泡排序就是把小的元素往前调或者把大的元素往后调.在相邻的两个元素间 ...
- 转载:有关qsort的使用方法和注意事项
七种qsort排序方法 <本文中排序都是采用的从小到大排序> 一.对int类型数组排序 int num[100]; Sample: int cmp ( const void *a , co ...
- sort 树 hash 排序
STL 中 sort 函数用法简介 做 ACM 题的时候,排序是一种经常要用到的操作.如果每次都自己写个冒泡之类的 O(n^2) 排序,不但程序容易超时,而且浪费宝贵的比赛时间,还很有可能写错. ST ...
- 关于c语言中qsort函数的一点心得
今天写c时无意间用到了排序,便想着使用c语言标准库中提供的排序函数,即qsort函数(c++stl中提供了sort函数用于排序),首先是介绍qsort函数的一些基本用法(以下内容转自: http:// ...
- STL笔记(6)标准库:标准库中的排序算法
STL笔记(6)标准库:标准库中的排序算法 标准库:标准库中的排序算法The Standard Librarian: Sorting in the Standard Library Matthew A ...
随机推荐
- [置顶] 自娱自乐7之Linux UDC驱动2(自编udc驱动,现完成枚举过程,从驱动代码分析枚举过程)
花了半个月,才搞定驱动中的枚举部分,现在说linux的枚举,windows可能有差别. 代码我会贴在后面,现在只是实现枚举,你可能对代码不感兴趣,我就不分析代码了,你可以看看 在<自娱自乐1&g ...
- PHP - 目录与文件
第6章 目录与文件 学习要点: 1.目录操作 2.磁盘.目录和文件计算 3.文件处理 将相关的数据组织为文件和目录等实体,这一直是计算环境的核心概念.出于这个原因,程序员需要有一种方法来获得关于文件和 ...
- Excel 公式(细节若干)
查找与引用: 1.如果需要找出匹配元素的位置而不是匹配元素本身,则应该使用 MATCH 函数而不是 LOOKUP 函数. 2.VLOOKUP的第一个参数允许使用通配符“*”来表示包含的意思,把*放在字 ...
- <context-param>与<init-param>的区别与作用(转)
<context-param>的作用:web.xml的配置中<context-param>配置作用1. 启动一个WEB项目的时候,容器(如:Tomcat)会去读它的配置文件we ...
- Java获取随机数的几种方法
Java获取随机数的几种方法 .使用org.apache.commons.lang.RandomStringUtils.randomAlphanumeric()取数字字母随机10位; //取得一个3位 ...
- Oracle闪回flashback总结
1.说明: Ø 采用的技术. 使用的是多个技术. 1. 闪回日志 2. 回收站 3. 回滚段 无法使用回收站的操作 Drop table xxx purge; Drop ...
- Android Content Provider的启动过程源码分析
本文參考Android应用程序组件Content Provider的启动过程源码分析http://blog.csdn.net/luoshengyang/article/details/6963418和 ...
- /bin/bash^M: 坏的解释器: 没有那个文件或目录
在Linux下编译cocos2d-x运行脚本的时候出现”/bin/bash^M: 坏的解释器: 没有那个文件或目录“这样的错误如下图. 解决方法: 使用在终端输入sed -i 's/\r$//' ma ...
- oracle 分区表exchange原理
oracle分区的exchange操作非常快,那原理是什么呢?下面我们来做个实验: SQL> create table test (id number(3)); 表已创建. SQL> in ...
- 基于visual Studio2013解决面试题之0510连续数之和
题目