C中的qsort函数
来源:互联网 发布:mac php一键开发环境 编辑:程序博客网 时间:2024/05/16 23:36
一、简介
原 型: void qsort(void *base, int nelem, int width, int (*fcmp)(const void *,const void *));
功 能: 使用快速排序例程进行排序
参 数:1 待排序数组首地址 2 数组中待排序元素数量 3 各元素的占用空间大小 4 指向函数的指针,用于确定排序的顺序
参 数:1 待排序数组首地址 2 数组中待排序元素数量 3 各元素的占用空间大小 4 指向函数的指针,用于确定排序的顺序
说明:qsort函数是ANSI C标准中提供的,其声明在stdlib.h文件中,是根据二分法写的,其时间复杂度为n*log(n)。
二、使用举例(MinGW5测试通过)
1、对一维数组排序:
2、对字符串排序:
01
#include <stdio.h>
02
#include <stdlib.h>
03
04
typedef
char
Element_type;
05
06
Element_type list[] =
"djfkwjefklwefagj"
;
07
08
int
Comp(
const
void
*p1,
const
void
*p2)
09
{
10
//降序排序
11
return
strcmp
((
char
*)p2,(
char
*)p1);
12
//升序排序
13
//return strcmp((char *)p1,(char *)p2);
14
}
15
16
int
main(
void
)
17
{
18
puts
(
"排序前:"
);
19
puts
(list);
20
printf
(
"\n"
);
21
22
//考虑还有字符串结束符,这里元素个数别忘减1
23
qsort
(list,
sizeof
(list) /
sizeof
(Element_type) - 1,
sizeof
(Element_type), Comp);
24
system
(
"pause"
);
25
26
puts
(
"排序后:"
);
27
puts
(list);
28
printf
(
"\n"
);
29
30
31
return
0;
32
}
3、按结构体中某个关键字排序(对结构体一级排序):
01
#include <stdio.h>
02
#include <stdlib.h>
03
04
struct
Node
05
{
06
double
data;
07
int
other;
08
}s[100];
09
10
int
Comp(
const
void
*p1,
const
void
*p2)
11
{
12
return
(*(Node *)p2)->data - (*(Node *)p1)->data;
13
}
14
15
int
main(
void
)
16
{
17
puts
(
"排序前:"
);
18
//code
19
printf
(
"\n"
);
20
21
qsort
(s, 100,
sizeof
(s[0]), Comp);
22
system
(
"pause"
);
23
24
puts
(
"排序后:"
);
25
//code
26
printf
(
"\n"
);
27
28
return
0;
29
}
4、按结构体中多个关键字排序(对结构体多级排序)[以二级为例]:
1
struct
Node
2
{
3
int
x;
4
int
y;
5
}s[100];
//按照x从小到大排序,当x相等时按y从大到小排序
1
int
Comp(
const
void
*p1,
const
void
*p2)
2
{
3
struct
Node *c = (Node *)p1;
4
struct
Node *d = (Node *)p2;
5
6
if
(c->x != d->x)
return
c->x - d->x;
7
else
return
d->y - c->y;
8
}
5、对结构体中字符串进行排序:
01
struct
Node
02
{
03
int
data;
04
char
str[100];
05
}s[100];
06
07
//按照结构体中字符串 str 的字典序排序
08
int
Comp(
const
void
*p1,
const
void
*p2)
09
{
10
return
strcmp
((*(Node *)p1)->str,(*(Node *)p2)->str);
11
}
0 0
- C中的qsort函数
- C中的qsort函数
- c语言中的Qsort函数
- C语言中的qsort函数
- C/C++中的qsort()函数及其cmp()
- C/C++ 中的qsort函数使用
- qsort 函数中的cmp
- C语言 qsort() 函数
- C语言--qsort函数
- C语言---qsort函数
- C语言qsort()函数
- C/C++ qsort()函数
- C qsort函数
- c中的qsort
- C语言中的qsort
- c中的qsort使用
- C中的qsort()用法
- C语言中的快速排序 qsort函数详解
- 面试分类
- 8大排序算法
- IE控件简介
- 高危函数
- 曾经做过一个让我有点自豪的项目
- C中的qsort函数
- mysql安装
- 我的Java学习推荐书目
- spring项目中监听器作用-ContextLoaderListener
- gimp 2.8 在 ubuntu 14.04 编译记录
- linux内核模块基本框架和例子
- TCP/IP异步通讯服务端实现方法
- Linux 64位安装32位编译库
- WCF:(413) Request Entity Too Large.