冒泡,快排都是常见的排序方法,这里介绍用头文件里的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排序的更多相关文章

  1. qsort排序算法

      七种qsort排序方法 <本文中排序都是采用的从小到大排序> 一.对int类型数组排序 int num[100]; Sample: int cmp ( const void *a ,  ...

  2. sort和qsort排序

    qsort(数组名,数组长度,数组中每个元素大小,compare); compare函数的写法决定了排序是升序还是降序.需要#include<stdlib.h> 例如: int compa ...

  3. qsort 排序功能 总结

    qsort包括在<stdlib.h>头文件里.此函数依据你给的比較条件进行高速排序,通过指针移动实现排序. 排序之后的结果仍然放在原数组中.使用qsort函数必须自己写一个比較函数. 函数 ...

  4. Immediate Decodability UVA-644(qsort排序 + 模拟)

    #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> us ...

  5. 排序 | 冒泡排序的优化与qsort快速排序

    冒泡排序 冒泡排序 Bubble_Sort,是极为简单的一种排序算法.虽然效率差一点,但好在具有结构简单,容易理解,易于操作等优点.冒泡排序就是把小的元素往前调或者把大的元素往后调.在相邻的两个元素间 ...

  6. 转载:有关qsort的使用方法和注意事项

    七种qsort排序方法 <本文中排序都是采用的从小到大排序> 一.对int类型数组排序 int num[100]; Sample: int cmp ( const void *a , co ...

  7. sort 树 hash 排序

    STL 中 sort 函数用法简介 做 ACM 题的时候,排序是一种经常要用到的操作.如果每次都自己写个冒泡之类的 O(n^2) 排序,不但程序容易超时,而且浪费宝贵的比赛时间,还很有可能写错. ST ...

  8. 关于c语言中qsort函数的一点心得

    今天写c时无意间用到了排序,便想着使用c语言标准库中提供的排序函数,即qsort函数(c++stl中提供了sort函数用于排序),首先是介绍qsort函数的一些基本用法(以下内容转自: http:// ...

  9. STL笔记(6)标准库:标准库中的排序算法

    STL笔记(6)标准库:标准库中的排序算法 标准库:标准库中的排序算法The Standard Librarian: Sorting in the Standard Library Matthew A ...

随机推荐

  1. asp.net 通过 Handler 导出数据至excel (让用户下载)

    效果图: 代码: Export2Excel.ashx <%@ WebHandler Language="C#" CodeBehind="Export2Excel.a ...

  2. MinGW开发工具的安装

    MinGW是Minimalist GNU for Windows的缩写,是把linux下的GNU开发工具包移植到windows的项目之一.和Cygwin不一样的是,MinGW不提供linux的posi ...

  3. UVa 二分图匹配 Biginners

    UVa 1045 - The Great Wall Game 最小权匹配 题意:给你一个n*n的棋盘,上面有n个棋子,要求通过移动各个棋子使得棋子在同一行或者同一列或者对角线上,求最小移动次数. 思路 ...

  4. PHP - 递归函数

    /** * factorial($num) 计算阶乘 * @param string $num * @return string $total */ function factorial($num) ...

  5. C# - 接口的继承

    代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using Syst ...

  6. API通用设计原则

    什么是好的API? ·        完备(Be Complete) 对确定重点支持的用户场景具有完备的功能支持.就是说,用户通过对一组API的调用能够完成预期的功能. ·        不冗余(Be ...

  7. NodeJs 实时压缩 项目js文件

    + 1. 下载nodejs : "http://nodejs.org/". + 2. 以administrator权限打开cmd.+ 3. cmd路径定位到要压缩的目录: &quo ...

  8. Linux入门:文件权限、用户、用户组(比较清楚)

    单个文件名或目录名长度不超过255字符: 文件或目录的绝对路径长度不超过4096字符:   一.文件所有者与用户组     一个文件有很多属性,包括文件类型.文件权限.文件隐藏权限.文件所有者.用户组 ...

  9. [hadoop系列]Pig的安装和简单演示样例

    inkfish原创,请勿商业性质转载,转载请注明来源(http://blog.csdn.net/inkfish ).(来源:http://blog.csdn.net/inkfish) Pig是Yaho ...

  10. MongoDB系列之三(副本集配置)

    今天我测试了一下MongoDB的副本集的配置. 首先从概念上说一下MongoDB副本集和主从复制的区别.其实副本集(Replica Set)是主从复制的高级形式.高级在哪里呢?主动复制实现了数据备份+ ...