本文实例为大家分享了C语言快排函数用法,供大家参考,具体内容如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct student
{
int id;
char name[12];
char sex;
};
int compare( const void * a, const void * b) //基本数据类型排序
{
return *( char *)a-*( char *)b; //从小到大
//取值//强转为相应类型的指针!!
}
int compare_struct( const void * a, const void * b)
{
return (*( struct student*)a).id-(( struct student*)b)->id;
//注意优先级诶!//否则报错在非结构体中。。。
}
int compare_struct_duoji( const void * a, const void * b) //多级排序
{
struct student student_a=*( struct student*)a;
struct student student_b=*( struct student*)b;
if (student_a.id==student_b.id)
{
return student_a.sex-student_b.sex;
}
else
{
return student_a.id-student_b.id;
}
}
void main()
{
//*************char型*************
char a[5]= "hello" ;
qsort (a,5, sizeof (a[0]),compare);
//元素个数//元素大小//函数指针
int i;
for (i=0;i<5;i++)
printf ( "%c " ,a[i]);
printf ( "\n" );
//************struct型************
struct student e[4]={{100, "chen" , 'm' },{100, "li" , 'f' }, \
{70, "wang" , 'f' },{100, "zhang" , 'm' }};
qsort (e,4, sizeof (e[1]),compare_struct_duoji);
for (i=0;i<4;i++)
printf ( "%d %s %c\n" ,e[i].id,e[i].name,e[i].sex);
}
|
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:http://blog.csdn.net/kepp_smiling/article/details/77519690