שאלה במבוא למבני נתונים ואלגוריתמים
נתון מערך A בגודל n, עם איברים לא בהכרח שונים. צריך למצוא ערכים x,z שמקיימים: - x < z - לא קיים במערך שום ערך y שמקיים x < y < z - הערכים x ו-z מופיעים במערך ביחד יותר מn/2 פעמים בסעיף הראשון הוכחתי שהחציון של A בהכרח שווה לx או z. בסעיף השני צריך למצוא אלגוריתם שמוצא את x ו-z בזמן ריצה לינארי. חשבתי על משהו בכיוון של מיון מנייה (אבל לא נתון לי שום דבר על המספרים במערך) או מיון בסיס, אבל אני לא מצליח להתקדם משם. ברור שאני יכול לקבל את החציון בעזרת select (מציאת איבר במיקום n/2) ולקבל את אחד המספרים. אבל המערך לא ממויין ואני לא יכול להמשיך לעשות selectים עד כלות... יש הצעות?
נתון מערך A בגודל n, עם איברים לא בהכרח שונים. צריך למצוא ערכים x,z שמקיימים: - x < z - לא קיים במערך שום ערך y שמקיים x < y < z - הערכים x ו-z מופיעים במערך ביחד יותר מn/2 פעמים בסעיף הראשון הוכחתי שהחציון של A בהכרח שווה לx או z. בסעיף השני צריך למצוא אלגוריתם שמוצא את x ו-z בזמן ריצה לינארי. חשבתי על משהו בכיוון של מיון מנייה (אבל לא נתון לי שום דבר על המספרים במערך) או מיון בסיס, אבל אני לא מצליח להתקדם משם. ברור שאני יכול לקבל את החציון בעזרת select (מציאת איבר במיקום n/2) ולקבל את אחד המספרים. אבל המערך לא ממויין ואני לא יכול להמשיך לעשות selectים עד כלות... יש הצעות?