【c语言】利用库函数进行快速排序(升)
来源:互联网 发布:免费微信一键转发软件 编辑:程序博客网 时间:2024/05/27 00:42
题目描述:
C/C++中有一个快速排序的标准库函数 qsort,在stdlib.h 中声明,其原型为:
void qsort(void *base,int nelem, unsigned int width,int (*pfCompare)( const void *, const void *));
其中base为待排序数据,nelem为元素数目,width为每个元素长度,单位为字节,pfCompare为一个比较函数。
根据qsort 函数的用法规定,“比较函数”的原型应是:
int 函数名(const void * elem1, const void * elem2);
如果* elem1 应该排在 * elem2 前面,则函数返回值是负整数;
如果* elem1 应该排在 * elem2 后面,则函数返回值是正整数;
如果* elem1和* elem2顺序无所谓,则函数返回0。
请编程实现调用该库函数,实现一个较大整数数组的增序快速排序。题目要求:
输入——第一行为整数元素数目N, 第二行为N个整数,用空格分隔。
输出——N个从小到大排好的整数,用空格分开。
#include <stdio.h>
#include <stdlib.h>
int compare(constvoid *a,const void *b)// 定义不是任何类型的指针常量,但是可以是任何类型的指针。
{
return *(int *)a - *(int *)b;
//如果* elem1 应该排在 * elem2 前面,则函数返回值是负整数;
//如果* elem1 应该排在 * elem2 后面,则函数返回值是正整数;
//如果* elem1和* elem2顺序无所谓;
}
int main()//主函数
{
int i,N;
scanf("%d",&N);//读入需要排序数组中的元素数目
int a[N];
for(i=0;i<N;i++)
{
scanf("%d",&a[i]);//读入需要排序的数组
}
qsort(a, N, sizeof(a[0]),compare);//对数组进行排序
//!!!注意参数填写完整
for(i = 0; i <N ; i ++)
{
printf("%d ", a[i]);//输出排序结束以后的数组
}
printf("\n");
return 0;
}
//快速排序:快速排序采用了一种分治策略——将原问题分解成若干个规模更小但是结构跟原问题相似的子问题。这些子问题的解决则利用了递归思想
- 【c语言】利用库函数进行快速排序(升)
- 如何利用C语言中的qsort库函数实现快速排序?
- 如何利用C语言中的qsort库函数实现快速排序
- c语言调用库函数qsort()进行快速排序
- c语言调用库函数qsort()进行快速排序
- c语言库函数 qsort(快速排序函数)
- 调用c语言库函数实现快速排序
- c语言快速排序的库函数整理
- c语言库函数编写快速排序
- 利用标准C语言库函数进行文本文件读写
- 在C语言的库函数中就有快速排序的库函数,即为qsort
- 利用qsort库函数实现快速排序
- 调用库函数进行的qsort快速排序
- 菜鸟学C语言三:快速排序与调用C语言库函数qsort()
- C语言:利用排序二叉树进行排序
- 快速排序(C语言)
- 快速排序(C语言)
- 快速排序(C语言)
- 盘点“PayPal黑帮”成员的传奇创业故事
- CSS的自我总结!
- 线程一
- 20171123Python07_循环和函数
- sprigmvc jsr303注解及实际开发应用实例1
- 【c语言】利用库函数进行快速排序(升)
- RUP与设计模式
- JSP的指令元素的概述;Page指令包含的属性Taglib指令JSP的指令-include和taglib指令
- 领域驱动视频(四)
- Hadoop性能调优
- dubbo框架搭建
- 关于《Yann LeCun:已解决CIFAR-10,目标 ImageNet》采访的总结
- Linux shell echo与printf
- linux 下一些命令