qsort函数用法举例

 #include <stdio.h>
#include <stdlib.h>
#include <string.h>
//数字比较函数
int cmp_num(const void* a, const void* b)
{
return *(int*)a - *(int*)b;
} //字符比较函数
int cmp_char(const void* a, const void* b)
{
return *(char*)a - *(char*)b;
} //字符串比较函数
int cmp_string(const void* a, const void* b)
{
return strcmp((char*)a, (char*)b);
} //结构体某个成员比较函数
struct Node
{
double data;
int other;
};
int cmp_struct(const void* a, const void* b)
{
return (*(struct Node*)a).data > (*(struct Node*)b).data ? : -;
} int main()
{
int i;
//1.对一维数组进行排序
int n, *array;
scanf("%d", &n);
array = (int*)malloc(n*sizeof(int));
for(i = ; i < n; i++)
{
scanf("%d", (array+i));
}
qsort(array, n, sizeof(int), cmp_num);
for(i = ; i < n; i++)
{
printf("%d ", array[i]);
}
free(array);
printf("\n\n"); //2.对二维数组进行排序
int j;
int array2[][] = {{, }, {, }, {, }, {, }, {, }};
qsort(array2, , sizeof(int)*, cmp_num);
for(i = ; i < ; i++)
{
for(j = ; j < ; j++)
{
printf("%d ", array2[i][j]);
}
printf("\n\n");
} //3.对字符进行排序
char array3[] = "cdefba";
qsort(array3, strlen(array3), sizeof(char), cmp_char); //string.h
for(i = ; i < (int)strlen(array3); i++)
{
printf("%c ", array3[i]);
}
printf("\n\n"); //4.对字符串进行排序
char array4[][] = {"this", "is", "my", "computer", "."};
qsort(array4, , sizeof(array4[]), cmp_string);
for(i = ; i < ; i++)
{
printf("%s\n", array4[i]);
}
printf("\n"); //5.对结构体某个成员进行排序
struct Node array5[] = {{, }, {1.2, }, {1.1, }, {8.1, }, {5.7, }};
qsort(array5, , sizeof(array5[]), cmp_struct);
for(i = ; i < ; i++)
{
printf("%f %d\n", array5[i].data, array5[i].other);
}
return ;
}

说明:
compare比较函数原型:compare( (void *) & elem1, (void *) & elem2 );

Compare函数的返回值
描述
<0 elem1将被排在elem2前面
0 elem1 等于 elem2
>0 elem1 将被排在elem2后面 

本文参考链接:
http://baike.baidu.com/link?url=WcoVEm6e7Ocki-7Sd1wR58dK9k7RJzkGaczK_ff5qnFqnuT0viTQJdCZfBieJisp3lbN9xnMBx1Z8rNeC8Sexa

qsort函数的更多相关文章

  1. qsort函数、sort函数【转】

    http://blog.163.com/yuhua_kui/blog/static/9679964420142195442766/ 先说明一下:qsort和sort,只能对连续内存的数据进行排序,像链 ...

  2. C中的qsort函数和C++中的sort函数的理解与使用

    一.qsort()函数 原型:_CRTIMP void __cdecl qsort (void*, size_t, size_t,int (*)(const void*, const void*)); ...

  3. C语言中qsort函数的应用

    qsort函数包含在<stdlib.h>的头文件里,本文中排序都是采用的从小到大排序 一.对int类型数组排序 ]; int cmp ( const void *a , const voi ...

  4. C语言中qsort函数用法

    C语言中qsort函数用法-示例分析    本文实例汇总介绍了C语言中qsort函数用法,包括针对各种数据类型参数的排序,非常具有实用价值非常具有实用价值. 分享给大家供大家参考.C语言中的qsort ...

  5. qsort函数详解

    C语言标准库函数 qsort 详解 文章作者:姜南(Slyar) 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作. 原文链接:http://www.slyar.c ...

  6. qsort函数用法【转】

    qsort函数用法 qsort 功 能: 使用快速排序例程进行排序  用 法: void qsort(void *base, int nelem, int width, int (*fcmp)(con ...

  7. qsort函数用法

    qsort函数用法   qsort 功 能: 使用快速排序例程进行排序 用 法: void qsort(void *base, int nelem, int width, int (*fcmp)(co ...

  8. qsort函数用法(转)

    qsort函数用法   qsort 功 能: 使用快速排序例程进行排序  用 法: void qsort(void *base, int nelem, int width, int (*fcmp)(c ...

  9. C语言qsort函数用法

    qsort函数简介 排序方法有很多种:选择排序,冒泡排序,归并排序,快速排序等. 看名字都知道快速排序是目前公认的一种比较好的排序算法.因为他速度很快,所以系统也在库里实现这个算法,便于我们的使用. ...

随机推荐

  1. 体验极速Android SDK的更新与下载

    首先:国内明确一点,国内由于天朝限制了google,更新和下载Android相关资料都比较吃力,因此,本文正式宣告,此问题不再是问题-------别说话,吻我 先给点福利: 关于java(Androi ...

  2. RegExp类型,单体内置对象

    1.RegExp类型:  1)什么是正则表达式:RegExp    --是一种规则,模式    --强大的字符串匹配工具    --创建:    --使用RegExp构造函数创建:var re=new ...

  3. noi 6045 开餐馆

    题目链接:http://noi.openjudge.cn/ch0206/6045/ 解题报告:参考了konjac 蒟蒻的. 题意: 有N个地址,从中选一些开餐馆,要保证相邻餐馆的距离大于k.问最大利润 ...

  4. js图片放大镜

    <!doctype html><html><head><meta charset="utf-8"><style>#sma ...

  5. ubuntu环境极其内存情况

    001:安装系统后 002:synergy 003:vim-cscope (修改vim脚本) 004:root 005:bashrc修改 006:bcompare 007:lib 008:git,gi ...

  6. python学习之for语句

    1.range数字范围 for i in range(5): print (i) 结果显示: 0 1 2 3 4 2.列表显示 ']: print ("current num:", ...

  7. 【前端】String.prototype.match() 用法详解

    var str="1 plus 2 equal 3" // 正则表达式 console.log(str.match(/\d+/g)); // ["1", &qu ...

  8. 【Tarjan】+【SPFA】APIO2009 Atm

    一.算法介绍 tarjan——求解有向图强连通分量.这个算法在本人的一篇blog中有介绍,这里就不赘述了.贴上介绍tarjan的的blog链接:http://www.cnblogs.com/Maki- ...

  9. Hosts文件的使用

    hosts文件是什么?在哪里?hosts文件:系统文件,可以记事本打开并编辑.一般用于域名到ip地址的解析.当用户在浏览器中输入网络的域名时,系统首先会自动从hosts文件中找到对应的ip地址,一旦找 ...

  10. BZOJ 2600: [Ioi2011]ricehub

    2600: [Ioi2011]ricehub Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 628  Solved: 325[Submit][Stat ...