例如给定一个长度为9的数组 :{1,2,3,2,4,2,5,2,2}输出:2? (因为2出现的次数是5次,超过一半)
我们可以先对数组进行从大到小,或从小到大排序,排完序后,中间的那个数字就是需要找的数字比如上面的那个数组,排完序后变为{1,2,2,2,2,2,3,4,5}那么取中间的那个数字就是2
int Cmp_int(const void* vp1, const void* vp2)
{
return *(int*)vp1 - *(int*)vp2;
}
int main()
{
int arr[9] = { 1 ,2,3,2 ,4,2,5,2,2 };
qsort(arr, sizeof(arr) / sizeof(arr[0]), sizeof(int), Cmp_int);
int middle = sizeof(arr) / sizeof(arr[0]) / 2;
printf("%d", arr[middle]);
return 0;
}
创作不易,如果喜欢的话给小编一个免费的赞以表鼓励吧🍗