C库函数qsort七种使用方法示例

这篇文章是  一楼那个学长写的 

 

 

 

C库函数qsort七种使用方法示例

七种qsort排序方法<本文中排序都是采用的从小到大排序>

一、对int类型数组排序
C++代码

  1. int num[100];  

Sample:

  1. int cmp ( const void *a , const void *b )  
  2. {  
  3.       return *(int *)a – *(int *)b;  
  4. }  
  5. qsort(num,100,sizeof(num[0]),cmp);  

二、对char类型数组排序(同int类型)
C++代码

  1. char word[100];  

Sample:

  1. int cmp( const void *a , const void *b )  
  2. {  
  3.      return *(char *)a – *(char*)b;  
  4. }  
  5. qsort(word,100,sizeof(word[0]),cmp)  

三、对double类型数组排序(特别要注意)
C++代码

  1. double in[100];  
  2. int cmp( const void *a , const void *b )  
  3. {  
  4.      return *(double *)a > *(double *)b ? 1 : -1;  
  5. } qsort(in,100,sizeof(in[0]),cmp);  

四、对结构体一级排序
C++代码

  1. struct In {  
  2. double data;  
  3. int other;  
  4. }s[100]  
  5. //按照data的值从小到大将结构体排序,关于结构体内的排序关键数据data的类型可以很多种,参考上面的例子写  
  6. int cmp( const void *a ,const void *b)  
  7. {  
  8.       return (*(In *)a).data > (*(In *)b).data ? 1 : -1;  
  9. }  
  10. qsort(s,100,sizeof(s[0]),cmp);  

五、对结构体二级排序
C++代码

  1. struct In {  
  2.     int x; int y;  
  3. }s[100];  
  4. //按照x从小到大排序,当x相等时按照y从大到小排序  
  5. int cmp( const void *a , const void *b )  
  6. {  
  7.      struct In *c = (In *)a;  
  8.      struct In *d = (In *)b;  
  9.      if(c->x != d->x) return c->x – d->x;  
  10.      else return d->y – c->y;  
  11. }  
  12. qsort(s,100,sizeof(s[0]),cmp);  

六、对字符串进行排序
C++代码

  1. struct In {  
  2.     int data; char str[100];  
  3. }s[100];  
  4. //按照结构体中字符串str的字典顺序排序  
  5. int cmp ( const void *a , const void *b )  
  6. {  
  7.      return strcmp( (*(In *)a)->str , (*(In *)b)->str );  
  8. }  
  9. qsort(s,100,sizeof(s[0]),cmp);  

七、计算几何中求凸包的cmp
C++代码

  1. int cmp(const void *a,const void *b)  
  2. //重点cmp函数,把除了1点外的所有点,旋转角度排序  
  3. {  
  4.      struct point *c=(point *)a;  
  5.      struct point *d=(point *)b;  
  6.      if( calc(*c,*d,p[1]) < 0) return 1;  
  7.      else if( !calc(*c,*d,p[1])  
  8.     && dis(c->x,c->y,p[1].x,p[1].y) < dis(d->x,d->y,p[1].x,p[1].y))  
  9.     //如果在一条直线上,则把远的放在前面  
  10.     return 1; else return -1;  
  11. }  

PS: 其中的qsort函数包含在的头文件里,strcmp包含在的头文件里

 

大家自己先做下,不要搜代码

 

NYOJ  7(街区最短路经)

 

#include<stdio.h>

#include<stdlib.h>

#include<math.h>

int x[101],y[101];

int x2[101],y2[101];

int cmp(const void*a,const void*b)

{

    return *(int *)a-*(int *)b;

}

int main()

{

    int N;

    while(scanf("%d",&N)!=EOF)

    {

        while(N--)

        {

            int i,n,sum=0;

            scanf("%d",&n);

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

            {

                scanf("%d %d",&x[i],&y[i]);

                x2[i]=x[i];

                y2[i]=y[i];

            }

            qsort(x2,n,sizeof(x2[0]),cmp);

            qsort(y2,n,sizeof(y2[0]),cmp);

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

            {

                if((x2[n/2]==x[i])&&(y2[n/2]==y[i]))

                {

                    continue;

                }

                sum+=abs(x[i]-x2[n/2])+abs(y[i]-y2[n/2]);

            }

            printf("%d\n",sum);

        }

    }

    return 0;

}

 

 

NYOJ 540(奇怪的排序)       来自第五届省赛,简单题

#include<stdio.h>

#include<stdlib.h>

typedef struct Node

{

    int mmm;//  数本身

    int mm;//   反序后的数

 

}Node;

Node node[55];

int cmp(const void *a,const void *b)

{

    Node *c = (Node *)a;

    Node *d = (Node *)b;

   

    return c->mm - d->mm;

}

int main()

{

    int N,m,n,i,x,k;

    scanf("%d",&N);

    while(N--)

    {

        x=0;

        scanf("%d %d",&m,&n);

        for(i=m;i<=n;i++)

        {

            x++;

            k=i;

            node[x].mmm=i;

            node[x].mm=0;

            while(k)

            {

               node[x].mm=node[x].mm*10+k%10;

               k=k/10;

            }

        }

        qsort(node+1,n-m+1,sizeof(node[1]),cmp);

        printf("%d",node[1].mmm);

        for(i=2;i<=n-m+1;i++)        {

            printf(" %d",node[i].mmm);

        }

         printf("\n");

    }

    return 0;

}

 

 

import java.util.Arrays;

import java.util.Scanner;

 

public class NYOJ540 {

 

    public static void main(String[] args) {

       int from, to, T;

       Node node[];

       Scanner sc = new Scanner(System.in);

       T = sc.nextInt();

       int temp;

       while(T-->0) {

           from = sc.nextInt();

           to = sc.nextInt();

           node = new Node[to-from+1];

           int j = 0;

           for(int i=0; i<node.length; i++) {

              //q已经初始化为0了

              node[i] = new Node();

           }

           for(int i=from; i<=to; i++) {

              node[j].p = i;

              temp = i;

              while(temp>0) {

                  /*

                   * 必须在大while循环构造node数组

                   * 否则就第一组数据正确

                   * 因为下面这一句用到了以前的q值

                   */

                  node[j].q = node[j].q*10 + temp%10;

                  temp /= 10;

              }

              j++;

           }

           /*

            * 只看API函数,第三个参数是toIndex,以为是下标

            * 谁知道具体一看不包括,wa了n次

            */

           Arrays.sort(node,0,to-from+1);

           System.out.print(node[0].p);

           for(int i=1; i<to-from; i++) {

              System.out.print(" "+node[i].p);

           }

           System.out.println(" "+node[to-from].p);

       }

    }

}

 

class Node implements Comparable<Node>{

    int p;

    int q;

   

    public Node() {

       this.p = 0;

       this.q = 0;

    }

 

    @Override

    public int compareTo(Node o) {

       // TODO Auto-generated method stub

       Node other = o;

       return this.q - other.q;

    }

   

   

}

转载于:https://www.cnblogs.com/hpuzyf/p/3237730.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/460874.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

成都电讯学院研发的计算机,成都电讯工程学院

[拼音]&#xff1a;chengdu dianxun gongcheng xueyuan[外文]&#xff1a;Chengdu Institute of Telecommunication中国一所以培养电子科学技术人才为主的多科性理工科高等学校。1956年9月创建于四川成都。建院初仅设4个专业。1984年&#xff0c;学校设12个系(26个专业)&#x…

Linux系统以源码方式安装软件的方法

以下内容源于网络资源的整理&#xff0c;如有侵权请告知删除。 Linux系统中安装软件的三种方法_馨若梦的博客-CSDN博客_linux怎么安装软件 Linux下源码编译安装详解_Zebul博的博客-CSDN博客_编译安装 Linux源码包的一般安装步骤_Kaiattrib的博客-CSDN博客_linux源码包安装步…

重庆邮电大学计算机科学与技术培养方案,重庆邮电大学计算机科学与技术学院.doc...

重庆邮电大学计算机科学与技术学院.doc重庆邮电大学计算机科学与技术学院2005——2006学年第二学期中期教学检查汇报材料2006年是我校发展史上具有里程碑意义的一年&#xff0c;学校正式更名为重庆邮电大学。为了适应大学的发展要求&#xff0c;适应教育现代化、信息产业化以及…

hdu4565之矩阵快速幂

So Easy! Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 813 Accepted Submission(s): 226 Problem Description A sequence S n is defined as: Where a, b, n, m are positive integers.┌x┐is the ceil …

Red Hat Enterprise Linux Server release 7.0双系统安装

2019独角兽企业重金招聘Python工程师标准>>> Red Hat Enterprise Linux Server release 7.0双系统安装 1.RedHat 公司的企业版7.0已经发布了。下面介绍一下在7.0下装双系统的步骤。 安装前系统&#xff1a;WIN7 要安装的第二个系统:RedHat Enterprise 7.0 请注意&am…

make clean与make distclean的区别

make clean&#xff1a;仅仅清除之前编译的可执行文件及配置文件。 make distclean&#xff1a;清除所有生成的文件&#xff0c;比如将由configure生成的文件全部删除掉&#xff0c;包括Makefile。 Makefile在符合GNU Makefile惯例的Makefile中&#xff0c;包含了一些基本的预…

win2008启动计算机应用配置,[计算机软件及应用]WIN2008_NAP服务器配置详解.doc

[计算机软件及应用]WIN2008_NAP服务器配置详解NAP server setting安装win 2008 操作系统&#xff0c;安装好后修改computer name为TLD4NAP服务器配置 一1,添加角色添加 Active Directory域服务2,安装Active Directory域服务路径&#xff1a;开始->”dcpromo”输入域名3,安装…

ruby 数据sql操作

ActiveRecord ActiveRecord 是 Rails 的 ORM 元件&#xff0c;負責與資料庫溝通&#xff0c;讓我們可以用物件導向的語法操作資料庫。在”打造 CRUD 應用程式”一章中提到的對應概念如下&#xff1a; 將資料庫表格(table) 對應到一個類別(classe)類別方法就是操作表格(table)將…

Android的按钮单击事件及监听器的实现方式

2019独角兽企业重金招聘Python工程师标准>>> 第一种&#xff1a;匿名内部类作为事件监听器类 大部分时候&#xff0c;事件处理器都没有什么利用价值&#xff08;可利用代码通常都被抽象成了业务逻辑方法&#xff09;&#xff0c;因此大部分事件监听器只是临时使用一…

Sublime text在Linux下的安装与配置

以下内容源于网络资源的整理&#xff0c;如有侵权请告知删除。文章内容主要整理源&#xff1a;C语言中文网&#xff1a;C语言程序设计门户网站(入门教程、编程软件)。 一、安装Sublime text 安装方法有两种&#xff1a;利用软件包管理工具安装&#xff0c;利用下载好的软件包进…

计算机统考分数短信显示合格,今年起全省八年级网考信息技术 成绩不合格不能升高中...

4月11日&#xff0c;省教育厅正式公布我省初中信息技术学业水平考试实施办法&#xff0c;明确从2019年起全面实施初中信息技术学业水平考试&#xff0c;考试对象为八年级(初二)学生&#xff0c;考试时间为每年5月下旬。今年首次参加信息技术学业水平考试的学生为2017年秋季入学…

在Spring中使用JTA事务管理

2019独角兽企业重金招聘Python工程师标准>>> Spring 通过AOP技术可以让我们在脱离EJB的情况下享受声明式事务的丰盛大餐&#xff0c;脱离Java EE应用服务器使用声明式事务的道路已经畅通无阻。但是很大部分人都还认为脱离Java EE应用服务器就无法使用JTA事务&#x…

Window7无法访问 Window server 2008 R2文件服务器的共享

最近碰到奇怪的问题&#xff0c;原来的R2文件服务器一直都正常&#xff0c;突然win7系统不能访问此服务器的共享了&#xff0c;Ping和远程都可以&#xff0c;而且XP系统也可以访问其共享&#xff0c;就是Win7不行&#xff0c;表现为&#xff1a;按IP访问好久没反应&#xff0c;…

第一季7:海思的根文件系统的概览与制作

一、根文件系统理论 关于根文件系统的原理&#xff0c;可以参看以下博客。 根文件系统的原理 使用BusyBox制作根文件系统的理论分析 二、海思的根文件系统 1、海思的根文件系统体现在Hi3518E_SDK_V1.0.3.0\package\rootfs_uclibc目录。 而根文件系统大部分工作由etc/init.d/…

破坏计算机系统既遂的标准,破坏计算机信息系统罪的量刑标准是什么

只有当我们知道了破坏计算机系统罪的定义我们才知道这个罪有多严重&#xff0c;如果触犯会受到怎样的处罚。所以破坏计算机信息系统罪实际意义是&#xff1a;某些人通过对计算机信息系统中正储存的数据&#xff0c;正在处理的数据以及正在传输的数据和针对相关的应用程序进行恶…

关于shell脚本编程一些有用资源的小结

系统维护管理过程中&#xff0c;编写一些能减轻管理负担的shell脚本是个明智的做法&#xff0c;一些例程性的事务&#xff0c;shell脚本会比手动操作高效的多。我有时也要编写一些&#xff0c;总结了一些学习及参考的shell资料&#xff0c;实用好用为主&#xff0c;大家看看有没…

五.几何对象和空间参考

几何对象是ArcGIS Engine中最基本的也是最常用的对象&#xff0c;我们所说的空间对象&#xff08;点&#xff0c;线&#xff0c;面&#xff09;都是几何对象&#xff0c;我们在删除&#xff0c;创建和进行地理分析的时候&#xff0c;就是处理一个包含几个对象的矢量图形。 Geom…

第一季8:完整版(即包含mpp)根文件系统的制作

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 一、概述 mpp是海思编写的与视频编解码有关的驱动、库等内容。我们需要部署这些内容&#xff0c;也就是把这些内容放在合适的目录位置。 二、mpp的目录结构 mpp目录位于Hi3518E_SDK_V1.0.3.0\pack…

计算机三级会保研加分吗,366所高校有保研资格,除了对成绩有要求外,还有哪些要求?...

文&#xff5c;冷丝栏目&#xff5c;考研录取我国本科院校有1000余所&#xff0c;具有保研资格的高校有366所&#xff0c;这些高校也是在不同年份按照不同批次获得保研资格。(本文文末附录全部高校名单)推免制度最初的目的上为了提高招生工作的质量&#xff0c;并且加大培养拔尖…

包装设计中文字字体的logo设计要注意什么

包装设计中文字字体的logo设计要注意什么 设计字体的目的&#xff0c;是要使文字既具有充分传达信息的功能&#xff0c;又与产品形式、产品功能&#xff1b;人们的审美观念达到和谐和统一。一般可根据以下几个原则进行设计。 (1)要符合包装装潢总体设计要求 包装装潢是造型、构…