要点1:头文件
#include#include //包含qsort函数
要点2:qsort函数的参数
//以整形数组a[]为例,排序前n个 qsort(a,n,sizeof(a[0],cmp); //四个参数依次为:数组名,排n项,单个数据的内存占用大小,排序的升降
要点3:cmp函数
//以整形为例
int cmp(const void *a,const void *b)
{
return *(int *)a - *(int *)b; //从小到大排序,a,b互换则是从大到小排序
}
对字符串数组的排序(char s[][]型):
#include#include #include char s[100][100]; int i, n; int cmp(const void *a, const void *b) { return (strcmp((char*)a, (char*)b)); } int main() { scanf("%d", &n); for(i = 0; i < n; i++) scanf("%s", s[i]); qsort(s, n, sizeof(s[0]), cmp); for(i = 0; i < n; i++) printf("%sn", s[i]); return 0; } 1
应用实例:
竞选投票
描述
得到超过一半班级的支持就可以当选,而每个班的投票结果是由该班级的所有同学投票产生,如果超过一半的同学支持小鲁,则他将赢得这个班级的支持。
现在给出每个班级的学生人数,至少需要得到多少票才能当选。
输入
多组输入数据
每组数据的第一行包括一个整数N(1<=N<=101),表示班级数,接下来一行包括N个正整数,分别表示每个班的学生人数,用空格隔开。
输出
输出一个数据,表示至少需要的票数。
输入样例 1
5 20 18 17 16 19
输出样例 1
28
#include#include #include int a[101],n; int cmp(const void *a,const void *b) { return (*(int *)a - *(int *)b); } int main() { scanf("%d",&n); for(int i=0; i



