در صورتی که بازهی اعداد مورد استفاده کوچیک باشه مثلاً ۱ تا ۱۰۰ باشه. در این صورت میشه یه آرایهی ۱۰۰ تایی ساخت که تعداد هر کدوم از اعداد رو نگه میداره
int count[100] = {0}:
for(int i=0; i<n; i++)
count[array[i]]++;
در صورتی که اسم آرایهی اولیه array باشه که n خونه داره.
اما در حالت کلی این روش حافظهی زیادی مصرف میکنه. چون ممکنه array آرایهای از اعداد long int باشه که نمیشه برای هر عددش یه خونهی آرایه در نظر گرفت. در این صورت من دو یه راه به نظرم میرسه.
ابتدا آرایه رو مرتب میکنیم. حالا فرض کنیم آرایهی مرتب شده array با n عضو باشه. الگوریتم زیر مد رو میده
int number = 0, count = 0, max_number = 0, max_count = 0;
number = max_number = array[0];
count = max_count = 1;
for(int i=1; i<n; i++)
{
if(number == array[i])
{
count++;
}
else
{
if(count > max_count)
{
max_count = count;
max_number = number;
}
count = 1;
number = array[i];
}
}
هیچ پژوهش انسانی نمیتواند ادعای علمی بودن داشته باشد، مگر اینکه از برهان ریاضی برخوردار باشد (لئوناردو داوینچی)