
27-09-2005, 19:18
|
|
|
|
חבר מתאריך: 31.07.04
הודעות: 198
|
|
|
האם הסיבוכיות בקוד שלי נחשבת...(?)
נתבקשנו לכתוב את strstr, ואם אפשר בצורה ליניארית...
שאלתי היא כזו...
כפי שניתן לראות אם תעיינו קצת בקוד, ישנם מקרים שהלולאה עוברת על אותו איבר פעמיים,
וזה כאשר מגיעים לפקודת הcontinue, מכיוון שזה מדלג על קידום text.
האם זה אומר שהסיבוכיות שלי היא כבר לא O של n?
קוד:
char *strstr(const char *text, const char *pattern)
{
char *pos = NULL;
int i = 0;
while (*(pattern + i))
{
if (*text == *(pattern + i))
{
i++;
if (i == 1) pos = text;
}
else
if (i > 0)
{
i = 0;
pos = NULL;
continue; //Skip text++;
}
text++;
if (!(*text)) return NULL;
}
return pos;
}
מנהלים... אתם חייבים לעשות משהו עם העורך הזה... כל העסק הזה של ימין ושמאל ממש לא נוח...
דוגמא: נסו להקליד O של n בצורה שזה אמור להיות כתוב, עם סוגריים והכל! 
|