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. 转:客制FORM调用会计科目弹性域/根据科目取得CODE_COMBINATION_ID

    1.首先在创建数据表时,添一个字段用来保存会计科目的ID.如:CODE_COMBINATION_ID 2.在FORM相应的数据块增加两个ITEM,用来显示科目NUMBER与DESCRITION. 例: ...

  2. 20. 星际争霸之php设计模式--适配器模式

    题记==============================================================================本php设计模式专辑来源于博客(jymo ...

  3. 开源.net 混淆器ConfuserEx介绍

    今天给大家介绍一个开源.net混淆器——ConfuserEx http://yck1509.github.io/ConfuserEx/ 由于项目中要用到.net 混淆器,网上搜寻了很多款,比如Dotf ...

  4. Android 程序崩溃后的处理

    在应用发布以后,由于安卓机型的千差万别 ,可能会出现各种各样的问题,这时候如果我们可以将这些信息收集起来,并进行修改就很不错了.下面就来讨论一下怎么处理程序崩溃以后,错误信息的手机. Java中已经提 ...

  5. Android网络框架源码分析一---Volley

    转载自 http://www.jianshu.com/p/9e17727f31a1?utm_campaign=maleskine&utm_content=note&utm_medium ...

  6. noi 8787 数的划分

    题目链接:http://noi.openjudge.cn/ch0206/8787/ 将整数n分成k份,且每份不能为空,任意两份不能相同(不考虑顺序). 简直跟分苹果一模一样. #include < ...

  7. 。【自学总结 3】------3ds Max 主工具栏

    1.选择并链接:选择对象,使其和其他对象建立父子关系. 2.断开选择链接:撤销链接关系. 3.选择过滤器列表:可以限制要选择的对象的特定类型和组合.例如,我们选择几何体后,其他对象就无法被选择. 4. ...

  8. Cheatsheet: 2015 11.01 ~ 11.30

    Golang Roadomatic: Node vs. Go Quick Guide to Golang for Java Developers 3 Go Gotchas Web Choosing a ...

  9. ASP.Net系列教程

    Getting Started with ASP.NET MVC This is a beginner tutorial that introduces the basics of ASP.NET M ...

  10. iscroll 使用及遇到的问题

    介绍: iscroll.js 是滑动事件.在手机上可以快速的滑动,用户体验很好.在线例子: 选择套餐 iScroll必须在调用之前实例化---用法 <script src="iscro ...