問題8:如何找出陣列中重複次數最多的數?
阿新 • • 發佈:2019-02-10
一種方法是以空間換時間,可以定義一個數組 int count[MAX],並將其陣列元素都初始化為0,然後執行for(int i=0; i<100; i++) count[A[i]]++操作,在count中找最大的數,即為重複次數最多的數。
程式碼如下:
#include <stdio.h> //該函式的作用是獲得陣列中最大的數,並將該數首次出現的索引賦值給num儲存 int getMaxNum(int* arr, int len, int &num) { int index = arr[0]; int i; for(i=0; i<len; i++) { if(arr[i]>index) { index = arr[i]; num = i; } } return index; } int main(void) { int array[] = {1, 1, 2, 2, 4, 4, 4, 4, 5, 5, 6, 6}; int length = sizeof(array)/sizeof(array[0]); int i; int num = 0; int record = getMaxNum(array,length,num); printf("record = %d\n", record); int* count = new int[record]; for(i=0; i<length; i++) count[i] = 0; for(i=0; i<length; i++) count[array[i]]++; printf("重複得最多的數的次數是:%d\n", getMaxNum(count, record, num)); printf("重複得最多的數首次出現的序號是:%d\n", num); return 0; }
程式執行結果為:
record = 6
重複得最多的數的次數是:4
重複得最多的數首次出現的序號是:4