- •1. Глоссарий
- •2. Дәрістер
- •Алгоритм абстрактілі машина іспеттес.
- •Примитивті рекурсия
- •Черч тезисі
- •4. Реттелмеген массивте біртіндеп іздеу алгоритмі
- •5. Реттелмеген массивте бинарлы іздеу алгоритмі
- •2. Сызықты сұрыптау
- •3. Кірістіру арқылы сұрыптау.
- •3. Машықтану сабақтары
- •4.Студенттердің өздік жұмыстар жоспары
- •4.1 Студенттің оқытушы басқаруымен орындайтын өздік жұмыстарының құрылымы
- •4.3 Рефераттар тақырыптары
- •4.4 Өзін тексеру үшін тест тапсырмалары
- •4.5 Межелік бақылау сұрақтары:
4. Реттелмеген массивте біртіндеп іздеу алгоритмі
Деректерге көп қолданылатын операциялардың бірі – іздеу. Іздеу мәселесі ЭЕМ-нің дамуының алғашқы жылдарынан бастап басты мәселелердің бірі болды. Аз көлемді ішкі жады мен тізбекті – лента типті құрылғыларда сақталған деректердің арасынан керекті ақпаратты іздеу ішкі жадының кеңейтілуін талап етті.
Іздеу операциясы екі нәтиже береді:
1. сәтті іздеу
2. сәтсіз іздеу.
Іздеу сәтті болса, ізделінді элементтің орналасқан жері табылады, яғни ол массивтің элементінің номерін береді.
Іздеудің бірнеше әдістері бар:
белгілі бір элементті іздеу
кез келген элементті іздеу т.б.
Мысалмен қарастырсақ:
Екі
жиын берілсін:
және
.
А жиыны В жиынының ішкі жиыны болатын,
болмайтынын анықтау керек болсын.
Бұл есепті шешу үшін екі әдісті қолдануға болады:
1. Элементтер беттескенге дейін әрбір аi элементтерін сәйкес bi элементтерімен салыстыру
2. А және В жиындарын реттеп алып, екі жиынның элементтерін бір бірімен беттескенше салыстыру
Іздеудің бірінші нұсқасында n, m-сандары аз болғанда тиімді, ал олар өссе, онда ә-ші әдіс тиімді болады. Алгоритмнің негізгі мазмұны оның күрделілігінде.
Алгоритмнің күрделілігі итерация ұғымымен байланысты.
Анықтама. Итерация дегеніміз алгоритмді енгізілетін деректерге қолдану операциясы. Әрбір келесі итерацияның бастапқы берілгендері болып оның алдындағы итерацияда анықталған мәндер алынады.
Егер массив реттелмеген болса, онда біртіндеп іздеу әдісін қолдануға болады:
A[1..n] массиві берілсін. P-ға тең элементті іздеу керек болсын.
1. i=1; болғанда бастаймыз
2. егер ai=p шарты орындалса, онда іздеу сәтті аяқталады
3. әйтпесе I:=i+1 деп келесі элементке көшеміз
4. егер i<=n болса, онда 2-ші пунктке көшеміз, әйтпесеәздеу сәтсіз аяқталады.
Бұл алгоритмнің күрделілігі n-1-ге тең, себебі элементтерді р-мен салыстыру саны сонша.
5. Реттелмеген массивте бинарлы іздеу алгоритмі
Егер массив реттелген болса, онда бинарлы-екілік іздеуді қолдануға болады. Оны логарифмдік іздеу немесе дихотомия әдісі дейді.
Мұнда екі көрсеткіш пайдаланады: l=1 массивтің алғашқы элементін көрсетеді, u=n массивтің соңғы элементін көретеді:
1. l=1; u=n; болады
2. егер u<l болса, онда алгоритм сәтсәз аяқталады, әйтпесе [l,u] аралығының ортасын табамыз. Осы моментте ізделінді k элементі массивте бар болса, al<=k<=au шартының орындалатынын білеміз. I=(l+u) div 2 деп аламыз , сонда I массивтің ортасын көрсетеді.
3. Егер k<ai болса, онда 4-ші пунктке көшеді, егер k>ai болса, онда 5-ші пунктке көшеді, егер k=ai болса, онда іздеу сәтті аяқталады.
4. u=i-1 деп орналастырамыз және 2-ші пунктке көшеміз
5. l=i+1 деп орналастырамыз және 2-ші пунктке көшеміз.
Бұл алгоритмде күрделілік
дәрежесі
-ге
тең болады.
Реттеу, сұрыптау алгоритмі
Деректерге көп қолданылатын амалдардың бірі – сұрыптау.
Сұрыптау дегеніміз – массив элементтерін белгілі бір ережені сақтайтындай етіп, реттеп орналастыру.
Сұрыптау ішкі және сыртқы деп бөлінеді. Сыртқы сұрыптауға сыртқы жадыдағы деректерді сұрыптау жатады. Ал ішкі сұрыптауға ішкі жадыға деректерді реттеп орналастыру жатады.
Ішкі сұрыптау бірнеше әдіспен орындалады:
1. Көпіршіту әдісі
Әдістің бұлай аталуы массивтің 1-ші және 2-ші элементтері салыстырылып, егер 1-ші элемент үлкен болса, олар орындарын ауыстырады, ал үлкен болмаса орнында қалады, сонда ауыр элемент астына түсіп жеңілі бетіне шығатын болғандықтан көпіршу сияқты көрінеді.
Мысалы.
a1, a2, a3, … , an тізбегі берілген. Элементтерін өсу реті бойынша реттеу керек.
алг реттеу (бүт n, нақ таб a[1:n])
aрг n, a
нәт a
басы бүт i, нақ Б
әзір i≤n-1
ц. б.
егер a[i] ≤a[i+1]
онда i:=i+1
әйтпесе
Б:=a[i];
a[i]:=a[i+1];
a[i+1]:=Б
i:=1;
бітті
ц. с.
а – ны шығару.
Соңы.
Дәл осылай кемуі бойынша да реттеуге болады.
