МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах
РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ" ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах Гендерна антидискримінаційна експертиза може зробити нас моральними рабами ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів
Контакти
Тлумачний словник Авто Автоматизація Архітектура Астрономія Аудит Біологія Будівництво Бухгалтерія Винахідництво Виробництво Військова справа Генетика Географія Геологія Господарство Держава Дім Екологія Економетрика Економіка Електроніка Журналістика та ЗМІ Зв'язок Іноземні мови Інформатика Історія Комп'ютери Креслення Кулінарія Культура Лексикологія Література Логіка Маркетинг Математика Машинобудування Медицина Менеджмент Метали і Зварювання Механіка Мистецтво Музика Населення Освіта Охорона безпеки життя Охорона Праці Педагогіка Політика Право Програмування Промисловість Психологія Радіо Регилия Соціологія Спорт Стандартизація Технології Торгівля Туризм Фізика Фізіологія Філософія Фінанси Хімія Юриспунденкция |
|
|||||||
Методи обчислення адресиМ-блоковий пошук
Цей спосіб зручний при індексному збереженні списку. Передбачається, що вихідний упорядкований список В довжини N розбитий на М підсписків B=B1,B2,..,Bm довжини N1, N2,...,Nm, таким чином, що B=B1,B2,..,Bm. Для знаходження ключа V, треба спочатку визначити перший зі списків Вi, і=1,...,М, останній елемент якого більше V, а потім застосувати послідовний пошук до списку Ві. Збереження списків Ві може бути зв'язним чи послідовним. Якщо довжини всіх підсписків приблизно рівні і M=N, то Мах М-блокового пошуку дорівнює 2N. При однаковій частоті використання елементів Avg M- блокового пошуку дорівнює N. Описаний алгоритм ускладнюється, якщо не відомо, чи дійсно в списку є елемент, що збігається з ключем V. При цьому можливі випадки: або такого елемента в списку немає, або їх кілька. Якщо замість ключа V є упорядкований список ключів, то послідовний чи М-блоковий пошук може виявитися зручнішим, ніж бінарний, оскільки нетреба повторної ініціалізації для кожного нового ключа зі списку V.
Нехай у кожному з М елементів масиву Т міститься елемент списку (наприклад, ціле позитивне число). Якщо є деяка функція Н(V), що обчислює однозначно по елементі V-ого адресу- ціле позитивне число з інтервалу [0,М-1 ],то V можна зберігати в масиві T з номером H(V) тобто V=T(H(V)). При такому збереженні пошук будь-якого елемента відбувається за постійний час, не залежний від М. Масив Т називається масивом хешування, а функція Н- функцією хешування. При конкретному застосуванні хешування зазичай є визначена область можливих значень елементів списку V і деяка інформація про них. На основі цього вибирається розмір масиву хешування М і будується функція хешування. Критерієм для вибору М і Н є можливість їхнього ефективного використання. Нехай треба зберігати лінійний список з елементів K1 ,K2,..,Kn, таких, що при Кi=Кj, mod(Ki,26)= mod(Kj,26). Для збереження списку виберемо масив хешування T(26) із простором адрес 0-25 і функцію хешування H(V)= =mod(V,26). Масив Т аповнюється елементами Т(Н(Кi))=Кi і Т(j)=0, якщо j є у (H(K1), Н(К2),..,Н(Кn)). Пошук елемента V y масиві Т із присвоюванням Z його індексу, якщо V міститься в Т, чи -1, якщо V не міститься в Т, здійснюється так:
int t[26],v,z,i; i=(int)fmod((double)v,26.0); if(t[i]= =v) z=i; else z= -1;
Додавання нового елемента V y список з поверненням у Z індексу елемента, де він буде зберігатися, реалізується фрагментом
z=(int)fmod((doule)v,26.0); t[z]=v;
а виключення елемента V зі списку присвоєнням
t[(int)fmod((double)v,26)]=0;
Тепер розглянемо складніший випадок, коли умова Ki=Kj H(Ki)=H(Kj) не виконується. Нехай V— множина можливих елементів списку (цілі позитивні числа), у якому максимальна кількість елементів дорівнює 6. Візьмемо М=8 і як функцію хешування виберемо функцію H(V)=mod(V,8).
Контрольні питання
1. Наведіть приклади використання алгоритмів пошуку. 2. Поясність особливості алгоритмів пошуку рядків. 3. Порівняйте алгоритми лінійного та бінарного пошуку. 4. Навіть алгоритми пошуку рядків. 5. Назвіть найефективніші методи пошуку рядків. Тести для закріплення матеріалу
1. Перерахувати алгоритми пошуку а) бульбашки; б) лінійний; в) ортогональний; г) бінарний; д) інтерполяційний.
2. Перерахувати алгоритми пошуку а) бульбашки; б) лінійний; в) Боуера і Мура; г) бінарний; д) Кнута-Моріса-Прата.
3. Перерахувати алгоритми пошуку в стрічках а) Боуера і Мура; б) бінарний; в) Кнута-Моріса-Прата; г) прямий пошук; д) паралельний пошук.
4. За фраґментом програми визначте метод пошуку:
L:=0;R:=N; while L<R do begin m:=(L+R) div 2; i:=0; while (T[m,i]=x[i]) and (x[i]<>00h) do i:=i+1; if T[m,i]<x[i] then L:=m+1 else R:=m end; if R<N then begin i:=0; while (T[R,i]=x[i]) and (x[i]<>00h) do i:=i+1 end
а) Боуера і Мура; б) бінарний; в) Кнута-Моріса-Прата; г) прямий пошук; д) паралельний пошук.
ЛЕКЦІЯ № 7
Тема: Алгоритми сортування: методи внутрішнього сортування
Ціль: розглянути методи внутрішнього сортування та їх застосування
Читайте також:
|
||||||||
|