博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
qsort 的用法
阅读量:4963 次
发布时间:2019-06-12

本文共 1571 字,大约阅读时间需要 5 分钟。

快速排序qsort真的很强大

一、对int类型数组排序

int num[100];

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

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

qsort(num,100,sizeof(num[0]),cmp);

二、对char类型数组排序(同int类型)

char word[100];

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

{
return *(char *)a - *(int *)b;
}

qsort(word,100,sizeof(word[0]),cmp);

三、对double类型数组排序

double in[100];

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

{
return *(double *)a > *(double *)b ? 1 : -1;
}

qsort(in,100,sizeof(in[0]),cmp);

四、对结构体一级排序

struct Sample

{
double data;
int other;
}s[100]

//按照data的值从小到大将结构体排序

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

{
return (*(Sample *)a).data > (*(Sample *)b).data ? 1 : -1;
}

qsort(s,100,sizeof(s[0]),cmp);

五、对结构体二级排序

struct Sample

{
int x;
int y;
}s[100];
//按照x从小到大排序,当x相等时按照y从大到小排序

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

{
struct Sample *c = (Sample *)a;
struct Sample *d = (Sample *)b;
if(c->x != d->x) return c->x - d->x;
else return d->y - c->y;
}

qsort(s,100,sizeof(s[0]),cmp);

六、对字符串进行排序

struct Sample

{
int data;
char str[100];
}s[100];
//按照结构体中字符串str的字典顺序排序

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

{
return strcmp( (*(Sample *)a)->str , (*(Sample *)b)->str );
}

qsort(s,100,sizeof(s[0]),cmp);

附加一个完整点的代码,对字符串二维数组排序:

#include <stdio.h>

#include <stdlib.h>
#include <string.h>

char s[2001][1001];

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

    return strcmp((char *)a,(char *)b);
}

int main(){

    int i,n;
    scanf("%d",&n);
    getchar();
    for(i=0;i<n;i++) gets(s[i]);
    qsort(s,n,1001*sizeof(char),cmp);
    for(i=0;i<n;i++) puts(s[i]);
    return 0;
}

转载于:https://www.cnblogs.com/qiufeihai/archive/2012/01/16/2323464.html

你可能感兴趣的文章
nginx+nodejs
查看>>
Spring事务源码梳理
查看>>
plsql连接oracle10g报错:ora-12514错误的解决
查看>>
win8环境下安装sql2008r2
查看>>
要想有什么样的成就就要有什么样的眼光-SNF快速开发平台
查看>>
浅谈 HTML5 的 DOM Storage 机制 (转)
查看>>
[Leetcode] Linked List Cycle II
查看>>
Java语言:JAVA8 十大新特性详解(zz)
查看>>
线程上下文类加载器本质剖析与实现
查看>>
Bear and Blocks (dp+思维)
查看>>
jQuery源码分析第一章---匿名函数
查看>>
高精度求A*B(FFT)
查看>>
hdu 6298 Maximum Multiple(规律)
查看>>
汇总java生态圈常用技术框架、开源中间件,系统架构及经典案例等
查看>>
使用Servlet上传文件
查看>>
PHP数据类型转换
查看>>
Promise深入浅出之个人拙见
查看>>
GlusterFS群集存储项目
查看>>
Maven的POM简单理解
查看>>
Jenkins中的Job配置里缺少“触发远程构建(例如,使用脚本)”选项的问题解决...
查看>>