原文:http://www.slyar.com/blog/stdlib-qsort.html

qsort包含在头文件中,此函数根据你给的比较条件进行快速排序,通过指针移动实现排序。排序之后的结果仍然放在原数组中。使用qsort函数必须自己写一个比较函数。

函数原型:

void qsort ( void * base, size_t num, size_t size, int ( * comparator ) ( const void *, const void * ) );

用法以及参数说明:

Sorts the num elements of the array pointed by base, each element size bytes long, using the

comparator function to determine the order.

The sorting algorithm used by this function compares pairs of values by calling the specified

comparator function with two pointers to elements of the array.

The function does not return any value, but modifies the content of the array pointed by base

reordering its elements to the newly sorted order.

csdn renyuzhuo0

base

Pointer to the first element of the array to be sorted.(数组起始地址)

num

Number of elements in the array pointed by base.(数组元素个数)

size

Size in bytes of each element in the array.(每一个元素的大小)

comparator

Function that compares two elements.(函数指针,指向比较函数)

1、The function must accept two parameters that are pointers to elements, type-casted asvoid*.

These parameters should be cast back to some data type and be compared.

2、The return value of this function should represent whether elem1 is considered less than,equal to,

or greater than elem2 by returning, respectively, a negative value, zero or a positive value.

Return Value

none (无返回值)

一、对int类型数组排序

int num[100];

int cmp ( const void *a , const void *b ) { return *(int *)a > *(int *)b?1:-1; }

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

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

char word[100];

int cmp( const void *a , const void *b ) { return *(int *)a > *(int *)b?1:-1; }

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?1:-1;

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

#include

#include

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

qsort(s,n,1001*sizeof(char),cmp);

for(i=0;i

return 0;

}

c语言字符串 排序函数,C语言标准库函数之qsort排序函数相关推荐

  1. c语言库里的排序函数,C语言标准库函数qsort详解

    1 函数简介 功 能: 使用快速排序例程进行排序 头文件:stdlib.h 用 法: void qsort(void *base,int nelem,int width,int (*fcmp)(con ...

  2. java 函数名调用_粉丝提问|c语言:如何定义一个和库函数名一样的函数,并在函数中调用该库函数...

    问题描述: 某个函数fun_1()是在lib内,没法修改的,在程序中大量的使用了该函数,现在想把原本fun_1失效(现在失效的方法是#define fun_1(..)),用另外一个函数fun_2(), ...

  3. C语言:如何定义一个和库函数名一样的函数,并在函数中调用该库函数

    某个函数fun_1()是在lib内,没法修改的,在程序中大量的使用了该函数,现在想把原本fun_1失效(现在失效的方法是#define fun_1(..)),用另外一个函数fun_2(),可是fun_ ...

  4. Bailian3719 学生信息用qsort排序【排序+字符串库函数】

    3719:学生信息用qsort排序 总时间限制: 1000ms 内存限制: 65536kB 描述 将输入的学生信息按名字排序后输出. 输入 每个学生信息是两行,第一行是名字,由英文字母和空格构成,最长 ...

  5. c语言字符串转数字,数字转字符串

    目录 一.字符串转数字 1. 标准库转换 atoi(),字符串转换成整型数 atol(),字符串转换成长整型数 atof()字符串转换为浮点值 atoll(),字符串转换成长长整型数 strtod() ...

  6. c语言中aver是什么意思_嵌入式C语言基础编程—5年程序员给你讲函数,你真的懂函数吗?...

    本文主要讲述的内容: 1函数概述 2函数定义的一般形式 3函数的参数和函数的值 3.1形式参数和实际参数 3.2函数的返回值 4函数的调用 4.1函数调用的一般形式 4.2函数调用的方式 4.3被调用 ...

  7. mysql c语言数字转字符串函数_C++_c语言标准库中字符转换函数和数字转换函数,字符转换为数字: #includest - phpStudy...

    c语言标准库中字符转换函数和数字转换函数 字符转换为数字: #include atoi();将字符转换为整型   例:char ch1;int i=atoi(ch1); atol();将字符转化为长整 ...

  8. srt文件解析 c语言,c语言标准库函数srt排序的介绍与使用.docx

    c语言标准库函数srt排序的介绍与使用 C语言标准库函数qsort排序的介绍与使用 2007-05-22 19:24 qsort函数包含在的头文件里.qsort函数声明如下:void qsort(vo ...

  9. C语言编程>第二十三周 ③ 下列给定程序中,函数fun的功能是:利用插入排序法对字符串中的字符按从小到大的顺序进行排序。插入法的基本算法是:先对字符串中的头两个元素进行排序;然后把第三字符插入

    例题:下列给定程序中,函数fun的功能是:利用插入排序法对字符串中的字符按从小到大的顺序进行排序.插入法的基本算法是:先对字符串中的头两个元素进行排序:然后把第三字符插入到前两个字符中,插入后前三个字 ...

最新文章

  1. Java Spring MVC项目搭建(三)——“Hello World”
  2. Intel® oneAPI Toolkit编译VASP
  3. 谈谈对python这门课的认识_【Python公开课】1-认识Python
  4. python线程池操作_Python mutiprocessing多线程池pool操作示例
  5. 敏捷开发团队管理系列之五:大型研发团队的切分(刚参加3.17 MDP团队管理场次的读者请看)...
  6. c语言popen函数多线程,关于多线程:多线程环境中的Python-Subprocess-Popen行为不一致...
  7. ACM-ICPC 2018 南京赛区网络预赛Sum,线性筛处理积性函数
  8. Sql loader使用教程
  9. Android 蓝牙AVRCP 专题 (2)----- 耳机端设置绝对音量,手机端收到音量改变Register Notification
  10. MapReduce----并行支持向量机(PSVM)第二部分之原始对偶内点法
  11. windows安装 wget
  12. 统考计算机应用基础ex,EXCEL操作题
  13. 拓展屏软件(给你的电脑加个屏)
  14. java中math中的指数是,java指数运算math
  15. linux下安装编译pidgin
  16. 俄勒冈大学计算机科学专业,美国俄勒冈大学计算机与信息科学博士后
  17. div上下切换(新增、删除、上下div切换)
  18. altium 去掉部分铺铜_DCS系统接地(四部分)
  19. Javaweb酒店预约管理系统(框架SpringBoot+Vue)
  20. JDK8新特性(三):集合之 Stream 流式操作

热门文章

  1. 用C语言实现2的次方运算
  2. C语言递归函数例子有5个小孩,第一个比第二个大2岁 第二个比第三个大2岁 以此类推 第五个10岁求第一个年纪
  3. 和大家分享几个最赚钱的行业
  4. XMind 8破解激活
  5. 逻辑回归(Logistic Regression, LR)简介
  6. Linux高级篇--Linux防火墙
  7. 国内大型公司,京东,携程从c .net转型java的原因有哪些?
  8. 蓬莱小课:什么是数据敏感度?怎么培养数据敏感度?
  9. Java的开源文字识别Tess4j与Tesseract-OCR
  10. PTA-7-4当日天数