本文实例为大家分享了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