教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 小学教育 >

C语言标准库函数 qsort 详解

来源:网络收集 时间:2026-09-09
导读: qsort 详解,别人的讲解,无耻的拿来主义了,呵呵 C语言标准库函数 qsort 详解 qsort包含在stdlib.h头文件中,此函数根据你给的比较条件进行快速排序,通过指针移动实现排序。排序之后的结果仍然放在原数组中。使用qsort函数必须自己写一个比较函数。 函数原型

qsort 详解,别人的讲解,无耻的拿来主义了,呵呵

C语言标准库函数 qsort 详解

qsort包含在<stdlib.h>头文件中,此函数根据你给的比较条件进行快速排序,通过指针移动实现排序。排序之后的结果仍然放在原数组中。使用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. 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 as void*. 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 )

{

qsort 详解,别人的讲解,无耻的拿来主义了,呵呵

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);

五、对结构体二级排序

qsort 详解,别人的讲解,无耻的拿来主义了,呵呵

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];

qsort 详解,别人的讲解,无耻的拿来主义了,呵呵

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;

}

…… 此处隐藏:985字,全部文档内容请下载后查看。喜欢就下载吧 ……
C语言标准库函数 qsort 详解.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/1543884.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)