C語言 求陣列中元素出現次數超過陣列長度一半的數

2021-09-25 23:38:03 字數 521 閱讀 3637

原理:設乙個變數儲存當前值。設乙個次數,當前值與下乙個值進行比較。假設相等,次數加一,假設不相等。次數減一。假設次數減到0了還是不相等,就把當前值替換掉。

#include #include #include #include #pragma warning (disable:4996)

int find_half(int *arr, int len)

if (arr[i]==tmp)//需要乙個變數儲存這個出現的值,與下次遍歷的數進行對比

else

}return tmp;//出現次數最多的到最後count值不為0,不會再重新賦值,所以最後的值就是我們要找的那個出現次數最多的數

}

int main()

; int len = sizeof(arr) / sizeof(arr[0]);

printf("%d\n", find_half(arr, len));

return 0;

}

求陣列中出現次數超過一半的元素

如果可以排序,就先排序,找n 2位置的元素,如果有,那麼這個元素就是,但也有可能沒有,所以要再檢查一遍,該方法的時間複雜度為o nlogn 另外一種方法就是用乙個棧來實現,對於當前元素,若棧空,則入棧,若棧不為空,與棧頂元素比較,相等則入棧,不等則彈出棧頂元素。如果有主元素,最後的棧頂一定是主元素。...

求無序陣列中元素出現次數超過陣列長度一半的數字

求無序陣列中元素出現次數超過陣列長度一半的數字.首先給出幾個 元素出現次數超過陣列長度一半 測試陣列 a1 7 a2 5 a3 9 不難發現 陣列中如果乙個數字出現次數超過數字長度的一半.如果把這個陣列排序,那麼排序後的陣列中間的數字一定是出現次數超過數字長度的一半.如陣列a1長度為7,按從小到大排...

Python 統計序列中元素出現次數

import sys import random from collections import counter reload sys sys.setdefaultencoding utf 8 data list random.randint 1,20 for in range 10 從1 20隨機...