用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 ...
随机推荐
- 关于如何实现程序一天只启动一次的想法(C++实现)
问题描述: 我们在程序开发当中,经常会遇到某些子程序需要实现一天只启动一次的功能,该功能实现的方法有很多种,其原理都是通过记录标记为来实现的.本次要分享的也是利用程序标记为来实现的,而且只需要使用一个 ...
- Ubuntu 挂载ISO文件的方法
1.在终端中输入:sudo mkdir /media/iso 在/media下生成一个iso文件夹用来挂载iso文件2.然后输入:sudo mount -o loop /home/X/X/XXXX.i ...
- 基于visual Studio2013解决C语言竞赛题之1018数组求和
题目 解决代码及点评 /************************************************************************/ ...
- (转载)Jvm工作原理学习笔记
一. JVM的生命周期 1. JVM实例相应了一个独立执行的java程序它是进程级别 a) 启动.启动一个Java程序时.一个JVM实例就产生了.不论什么一个拥有publ ...
- os内存使用管理之linux篇
os内存使用管理之linux篇 看一下LINUX内存机制是怎么运作的,了解了基础知识,对于理解和操作是有很大帮助的. 抛砖引玉: Linux 优先使用物理内存,当物理内存还有空闲时,linux是不会施 ...
- 【Demo 0009】Android 组件(BroadcastReceiver)
本章学习要点: 1. 了解Broadcast的作用; 2. 掌握自定义广播和系统广播的接收: 3. 掌握广播的发送:
- Android ListView 之 SimpleAdapter 二 (包含 item 中按钮监听)
1 MainActivity.java package com.myadapter; import java.util.ArrayList; import java.util.HashMap; ...
- 简单的javascript抽奖程序
<html> <head> <title>手机号码抽奖程序</title> <script> //声明一个数组装住号码,可根 ...
- [Java Performance] 数据库性能最佳实践 - JPA缓存
JPA缓存(JPA Caching) JPA有两种类型的缓存: EntityManager自身就是一种缓存.事务中从数据库获取的和写入到数据库的数据会被缓存(什么样的数据会被缓存.在后面有介绍).在一 ...
- Android 高仿 频道管理----网易、今日头条、腾讯视频 (可以拖动的GridView)附源码DEMO
距离上次发布(android高仿系列)今日头条 --新闻阅读器 (二) 相关的内容已经半个月了,最近利用空闲时间,把今日头条客户端完善了下.完善的功能一个一个全部实现后,就放整个源码.开发的进度就是按 ...