C语言函数qsort的使用方法
qsort函数stdlib.h文件中,函数原型为
void qsort(void *base,size_t nelem,size_t width,int (*Comp)(const void *,const void *));
*base 为要排序的数组
nelem 为要排序的数组的长度
width 为数组元素的大小(一字节为单位)
默认是从小到大排序的!
(* Comp)(const void *p1,const void *p2) 为判断大小函数的指针,这个函数需要自己定义,如果p1>p2,函数返回-1;a<b,函数返回1;a==b函数返回0
对int类型数组排序
int num[100];
int cmp ( const void *a , const void *b )
{
return *(int *)a - *(int *)b;
}
qsort(num,100,sizeof(num[0]),cmp);
对double类型数组排序
int Mycmp(const void *a ,const void * b)
{
return (*(double *)a>*(double * )b?1:-1);
}
struct ln{
double data;
int x;
int y;
};
int Mycmp2(const void *a ,const void * b)
{
return (((ln *)a)->data>((ln *)b)->data?1:-1);
}
对结构体二级排序
struct ln{
int x;
int y;
};对x按升序排列,如果x相同,则y按降序排列
int Mycmp1(const void *a ,const void * b)
{
return (((ln *)a)->data>((ln *)b)->data?1:-1);
} //升序int Mycmp2(const void *a ,const void * b)
{
if(((ln *)a)->data==((ln *)b)->data)
return (((ln *)a)->x>((ln *)b)->x?-1:1);
}//降序int Mycmp2(const void *a ,const void * b) //这个函数和上面两个函数之和的功能相同
{
if(((ln *)a)->data==((ln *)b)->data)
return (((ln *)a)->x>((ln *)b)->x?-1:1);
else
return (((ln *)a)->data>((ln *)b)->data?1:-1);}
对字符串进行排序
int Mycmp3(const void *a ,const void * b)
{
return strcmp(((ln *)a)->str,((ln *)b)->str);
}对字符串二维数组排序完整代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>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<n;i++) gets(s[i]);
qsort(s,n,1001*sizeof(char),cmp);
for(i=0;i<n;i++) puts(s[i]);
return 0;
}END
注意事项
qsort函数中的第四个参数为函数指针,函数名称即是函数指针,int (* cmp)(const void * a,const void * b),其中指针a,b指向的是qsort中第三个参数指定的类型变量;
C语言函数qsort的使用方法的更多相关文章
- C语言函数实现的另类方法
在前面看过那个BT的Javascript程序后,我们来看一个C语言的,相信大家还记得输出从1到1000的数最后的那个示例,本站还有很多这样的示例,如:变态的hello word,如何教新手编程,还有恐 ...
- 从linux0.11中起动部分代码看汇编调用c语言函数
上一篇分析了c语言的函数调用栈情况,知道了c语言的函数调用机制后,我们来看一下,linux0.11中起动部分的代码是如何从汇编跳入c语言函数的.在LINUX 0.11中的head.s文件中会看到如下一 ...
- C语言函数指针实验
上次看Atmel的示例工程,发现人家使用了函数指针的结构体(函数指针结构体).感叹人家的C语言功夫审核,自己费劲还是只能读懂的份.不过,函数指针确实好用.今天就试试这个超牛的东西.Now let's ...
- C语言(函数)学习之strstr strcasestr
C语言(函数)学习之[strstr]&[strcasestr]一.strstr函数使用[1]函数原型char*strstr(constchar*haystack,constchar*needl ...
- C语言函数指针基础
本文写的非常详细,因为我想为初学者建立一个意识模型,来帮助他们理解函数指针的语法和基础.如果你不讨厌事无巨细,请尽情阅读吧. 函数指针虽然在语法上让人有些迷惑,但不失为一种有趣而强大的工具.本文将从C ...
- 动态修改 C 语言函数的实现
Objective-C 作为基于 Runtime 的语言,它有非常强大的动态特性,可以在运行期间自省.进行方法调剂.为类增加属性.修改消息转发链路,在代码运行期间通过 Runtime 几乎可以修改 O ...
- IOS学习笔记06---C语言函数
IOS学习笔记06---C语言函数 -------------------------------------------- qq交流群:创梦技术交流群:251572072 ...
- Go 语言函数
函数是基本的代码块,用于执行一个任务. Go 语言最少有个 main() 函数. 你可以通过函数来划分不同功能,逻辑上每个函数执行的是指定的任务. 函数声明告诉了编译器函数的名称,返回类型,和参数. ...
- Go语言函数
目录 函数定义 函数返回多个值 函数参数 Go 语言函数值传递 Go语言函数引用传递 函数用法 函数作为值 匿名函数 闭包 方法 不定参数的函数 init函数 内建函数 函数调用机制 总结 函数定义 ...
随机推荐
- php中的短标签 太坑人了
今天配置了一个php页面去修改svn密码问题,结果调了半天,最后在Windows和 Linux的运行现象是不一样,运行结果更不一样了,关键是完全一模一样的代码. 最后发现是短标签引起的,Windows ...
- windows8开发学习笔记
XAML行列定义 <Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}"> &l ...
- 一个纯CSS DIV天气动画图标【转扒的】
<p> </p> <style><!-- /* SUNNY */ .sunny { -webkit-animation: sunny 15s linear i ...
- wordpress一些常用代码
显示最新文章 <div id="newpost"> <h2> 最新文章</h2> <?php $previous_posts = get_ ...
- 如何实现button像a标签一样跳转页面
这个实现起来很简单,如下: <a href="{% url 'cms:add' %}"> <button class="btn btn-default& ...
- DataTable AsEnumerable 的使用
var p = DataTable.AsEnumerable().Where(t => t.Field<int>("ChannelID") == int.Pars ...
- cf459A Pashmak and Garden
A. Pashmak and Garden time limit per test 1 second memory limit per test 256 megabytes input standar ...
- Java的Git管理工具Gitblit
From:http://www.oschina.net/p/gitblit Gitblit 是一个纯 Java 库用来管理.查看和处理 Git 资料库.相当于 Git 的 Java 管理工具. 下载地 ...
- json概述及python处理json等数据类型
<一,概念> 序列化(Serialization):将对象的状态信息转换为可以存储或可以通过网络传输的过程,传输的格式可以是JSON.XML等.反序列化(deserialization): ...
- 使用virtualenv隔离python环境
使用virtualenv隔离python环境 | 爱积累爱分享 使用virtualenv隔离python环境 iitshare 分类:Python | 标签:pythonenv, virtualenv ...