算法思想:
首先将数组中的数从小到大排序,使用C语言中的内置函数qsort实现,然后依次遍历每个数据,并记录该数据被访问了几次,记录最高次数,并比较两个不同的数出现的次数,最高者即为数组中的众数;
代码实现:
#include#include //排序函数调用的函数 int compare(const void* left, const void* right) { return *(int*)left - *(int*)right; } void get_mode(int nums[],int len,int& mode,int& max_count) { qsort(nums, len, sizeof(nums[0]),compare); //从小到大排序 int count = 1, s = nums[0]; for (int i = 1; i < len; i++) { if (nums[i] == s) { count++; } else { s = nums[i]; count = 1; } if (count > max_count) { mode = s; max_count = count; } } } int main() { int a,b=1; int nums[] = { 77,2,5,77,23,64,77,77,44,77,2,23,77,45,77,70,23,55,23 }; int len = sizeof(nums) / sizeof(nums[0]); get_mode(nums,len,a,b); printf("众数=%d,出现次数=%dn", a,b); return 0; }



