找出至少出现了(n+1)/2次的数,排序后,a[n/2]便是所找的数!
(因为出现次数多于一半,排序后一定横跨中间。很灵活的题,仍需要努力!)
1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<string.h> 4 #include<math.h> 5 6 int cmp(const void *a,const void *b){ 7 return *(int *)a-*(int *)b; 8 } 9 10 int main(){ 11 int i,j,n,a[999999]; 12 while(scanf("%d",&n)!=EOF){ 13 for(i=0;i<n;i++){ 14 scanf("%d",&a[i]); 15 } 16 qsort(a,n,sizeof(int),cmp); 17 printf("%d ",a[n/2]); 18 } 19 return 0; 20 }