冒泡,快排都是常见的排序方法,这里介绍用头文件里的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. Bootstrap技术: 如何给nav导航组件的tab页增加关闭按钮以及动态的添加和关闭tab页

    先给出示例html代码 <div> <!-- Nav tabs --> <ul class="nav nav-tabs" role="tab ...

  2. C# - 委托_ 匿名方法

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

  3. 每周日与周四《红酒屋》探戈舞会"Wine Bar" Milonga_原生态拉丁_新浪博客

    每周日与周四<红酒屋>探戈舞会"Wine Bar" Milonga_原生态拉丁_新浪博客     每周日与周四<红酒屋>探戈舞会"Wine Bar ...

  4. jquery mobile左右滑动切换页面

    jquery mobile左右滑动切换页面 $(function() {$("body").bind('swiperight', function() {  $.mobile.ch ...

  5. Ubuntu Crontab

    Ubuntu启用Crontab 启动cron服务: service cron start 如果需要设置为开机时自动启动,则执行 sysv-rc-conf --level 35 cron on 另外,u ...

  6. Java面试题精选(三) JSP/Servlet Java面试逻辑题

    --   JSP/Servlet  Java面试逻辑题   --     很显然,Servlet/JSP的WEB前端动态制作的重要性比HTML/CSS/JS的价值高很多,但我们都知道他们都是建立在HT ...

  7. log4net概述

    log4net概貌 log4net是一个框架,用来记录日志的框架.为什么要记录日志呢?每个程序员都不能保证自己的程序完全没有错误,可是当程序已经部署的时候出现错误怎么办?我们这时候就要根据我们的日志文 ...

  8. 图片组件——axure线框图部件库介绍

    我们在后面的组件使用中,都统一使用"从部件区域拖拽图片组件到页面区域中" 1. 图片载入 1.1 将图片组件拖拽到页面区域 1.2 双击图片组件 1.3 选择合适图片,点击打开 1 ...

  9. 基于visual Studio2013解决C语言竞赛题之1083人机博弈

        题目 解决代码及点评 /************************************************************************/ /* ...

  10. linux-mint下搭建android,angularjs,rails,html5开发环境 - qijie29896的个人空间 - 开源中国社区

    linux-mint下搭建android,angularjs,rails,html5开发环境 - qijie29896的个人空间 - 开源中国社区 http://blog.csdn.net/orzor ...