السلام عليكم
المنوال في الاحصاء : هو القيمة الأكثر تكرارا ً بين مجموعة أرقام
يمكن أن يكون قيمة أو قيمتين و أكثر أو لا شيء
قمت بكتابة الكود التالي بلغة c++
و عالجت جميع الحالات الخاصة
لكن لاحظت أن تعقيدها2^n و ذلك في أسوء حالاتها ( حالة عدم وجود منوال)
و أعتقد أنه يوجد خوارزمية تعقيدها أقل من ذلك فما رأيكم ؟
هذا هو الكود
#include "stdafx.h"
#include<iostream>
using namespace std;
void main()
{
const int size=4;
int a[size]={1,2,3,3};
int index=0;
int lastindex;
int max=a[0];
int maxCounter=0;
int lastmaxCounter;
int i;
int rep=1;
for(i=0;i<size;i++)
{
if(a==max)
{
++maxCounter;
lastindex=i;
}
if(i==(size-1) && maxCounter<((size)-(lastindex)))
{
i=0;
++index;
max=a[(index)];
if(lastmaxCounter==maxCounter+1 && index!=0)
{
rep++;
}
lastmaxCounter=maxCounter+1;
maxCounter=0;
}
}
if(maxCounter==1)
cout<<"There is No Number Repeater in This matrix";
else if(maxCounter==size/(rep+1))
{
cout<<"There is "<<(rep+1)<<" Frequenset\n";
for(int c=0;c<size;c+=maxCounter)
{
cout<<a[c]<<"\t";
}
}
else
cout<<max<<"\t"<<maxCounter;
}ملاحظة الـ max هو متحول المنوال
