Іздеу және сұрыптау алгоритімдері


Іздеу алгоритмі
Сұрыптау алгоритмі
Орналастыру әдісі арқылы сұрыптау.
Сыртқы сұрыптау
Тура бірігу
Кәдімгі бірігу
Бөлу сұрыптауы (Quicksort)
Барлық әдістерді статикалық және динамикалық деп қарастыруға болады. Массивтен статикалық әдіспен іздеу кезінде оның мәндері өзгермейді. Массивтен динамикалық әдіспен іздеу кезінде оның өлшемі өзгеруі мүмкін, себебі ол қайтадан сұрыпталады. Біз көбінде статикалық әдісті қолданамыз, үйткені мәтіндік редактордағы сөздерді өзгерте алмаймыз, ал динамикалық тәсіл ойын құрғанда пайдаланылады.
Іздеу әдістерін сондай-ақ нақты кілттерді пайдаланатын және туындаушы кілттерді пайдаланатын деп екіге бөледі. Бұл жағдайда кілт деп өзіміз іздеп отырған сөзді айтады. Мәтіндік редакторға қолданылатын кілт – туындаушы болып табылады, себебі ізделінетін массив алдын-ала алфавит бойынша сұрыпталған. Бұл рет іздеуді жеңілдету үшін пайдаланылады.
Кейбір кітаптарда бұл әдіс «экстраполяция әдісі» деп аталады. Экстарполяция – берілген интервалдан тыс бірнәрсені анықтау әдісі, ал интерпояция – сол интервал аралығына анықтау әдісі. Сондықтан да «экстраполяция әдісі» деп атау қате, үйткені ізделінетін сөзді шекарадан тыс аумақта іздеу мүмкін емес.бұл әдісті сипаттамас бұрын сізге ағылшын тіліндегі «treasure» сөзінің аудармасы қажет болды дейік. Яғни сіздің алдыңызда тапсырма – осы сөзді сөздіктен іздеу. Біздің келесі іс-әркеттеріміз қандай да бір іздеу алгоритмін құрумен жалғасады. Ізделінетін сөзді алфавит бойынша сұрыпталған массивтен іздейміз, ал керекті сөз бізге белгілі. Оны тез арада тауып алуға болады. Енді осы іздеуге толығымен тоқталайық. Бізге керекті сөз «т» әрпінен басталады, яғни алфавиттің екінші бөлігінде, немесе біз ол қандай орында тұрғанында шамамен есептеп ала аламыз. Яғни қанша дым жасауға болатынын анықтап аламыз. Егер ізделінетін массив үлкен болса осы әдіс арқылы оның шекрасын көрсетіп, тек осы аралықты ғана іздеуге болады.

Пән: Информатика
Жұмыс түрі: Реферат
Көлемі: 5 бет
Бұл жұмыстың бағасы: 300 теңге




ҚАЗАҚСТАН РЕСПУБЛИКАСЫНЫҢ БІЛІМ ЖӘНЕ ҒЫЛЫМ МИНИСТРЛІГІ

ТҰРАР РЫСҚҰЛОВ атындағы ҚАЗАҚ ЭКОНОМИКАЛЫҚ УНИВЕРСИТЕТІ

Кафедра Қолданбалы информатика

Реферат
Тақырыбы: Іздеу және сұрыптау алгоритімдері

Орындаған: Қожахметов Ш

Мамандығы: ИЭФ 104 - топ

Тексерген: Жұмажанов Б.Ж.

АЛМАТЫ 2008

Іздеу алгоритмі
Барлық әдістерді статикалық және динамикалық деп қарастыруға болады.
Массивтен статикалық әдіспен іздеу кезінде оның мәндері өзгермейді.
Массивтен динамикалық әдіспен іздеу кезінде оның өлшемі өзгеруі мүмкін,
себебі ол қайтадан сұрыпталады. Біз көбінде статикалық әдісті қолданамыз,
үйткені мәтіндік редактордағы сөздерді өзгерте алмаймыз, ал динамикалық
тәсіл ойын құрғанда пайдаланылады.
Іздеу әдістерін сондай-ақ нақты кілттерді пайдаланатын және туындаушы
кілттерді пайдаланатын деп екіге бөледі. Бұл жағдайда кілт деп өзіміз іздеп
отырған сөзді айтады. Мәтіндік редакторға қолданылатын кілт – туындаушы
болып табылады, себебі ізделінетін массив алдын-ала алфавит бойынша
сұрыпталған. Бұл рет іздеуді жеңілдету үшін пайдаланылады.
Кейбір кітаптарда бұл әдіс экстраполяция әдісі деп аталады.
Экстарполяция – берілген интервалдан тыс бірнәрсені анықтау әдісі, ал
интерпояция – сол интервал аралығына анықтау әдісі. Сондықтан да
экстраполяция әдісі деп атау қате, үйткені ізделінетін сөзді шекарадан
тыс аумақта іздеу мүмкін емес.бұл әдісті сипаттамас бұрын сізге ағылшын
тіліндегі treasure сөзінің аудармасы қажет болды дейік. Яғни сіздің
алдыңызда тапсырма – осы сөзді сөздіктен іздеу. Біздің келесі іс-
әркеттеріміз қандай да бір іздеу алгоритмін құрумен жалғасады. Ізделінетін
сөзді алфавит бойынша сұрыпталған массивтен іздейміз, ал керекті сөз бізге
белгілі. Оны тез арада тауып алуға болады. Енді осы іздеуге толығымен
тоқталайық. Бізге керекті сөз т әрпінен басталады, яғни алфавиттің екінші
бөлігінде, немесе біз ол қандай орында тұрғанында шамамен есептеп ала
аламыз. Яғни қанша дым жасауға болатынын анықтап аламыз. Егер ізделінетін
массив үлкен болса осы әдіс арқылы оның шекрасын көрсетіп, тек осы аралықты
ғана іздеуге болады. Ол үшін келесідей ек теңдік аламыз:
T1=M*N;
T2=2M*Log(2)N+N*Log(2)N;
N – массивтегі элементтердің саны.
M – рет іздеуге болады.
Тура ауытырудың алгоритмі жасайтын операция саны M*N-ге тең. Ал
сұрыптауға кететін уақыт N*Log(2)N-ге тең, оған тағы 2M*Log(2)N дихотомия
әдісін қосамыз. T1=T2 кезінде екі алгоритм де тиімді шекарада боламыз.
Алдымен linearsearch (сызықты іздеу) деген шағын порграмма
құрастырайық. Оның үш параметрі болады: Strings – жолдың өрнектер қптпры,
newstring – жолдың өрнек, осыны іздеу қажет және size – қаралатын қатардың
элемпенттер саны.
Біздің басты программамызда екі тип анықталған және оларды біз
linearsearch-ң
формальді параметрін баяндауда қолданамыз:
Type StrType=String[20]
ArrayStrType=Array[1..100] Of StrType;
Енді біз шағын прогарамманың басын жаза аламыз:
Function linearsearch(Strings:ArrayStrType; NewString:String;
Size:Integer):Integer;
String қатарынынң әр элементі NewString – пен салыстырылады. Егер де
мәндері сәйкес келсе, онда табылған элементтің позийиясы (индексі)
қайтарылады. Ал егер NewString – ті барлық элементтермен салыстырып болған
соң, керекті жолдың өрнек табылмаса, онда 0 мәні қайтарылады, бұл –
іздеуден түк шықпады деген сөз. Сипатталған процессте барлық элементтер
кезекпен салыстырылады. Сондықтан бұл әдісті сызықты немесе тізбектелген
іздеу әдісі деп атайды.
әр элемент Strings жодың өрнегінде бір-бірден кездеседі деп
ойлайық(егер бұлай болмаса, онда олардың бірінші рет кездескендерін
белгілеп отырамыз). Егер элемент табылса, әрі қарай процесс тоқтатылады,
сондықтан логикалық Found айнымалысын енгізейік:

Var position:Integer;
Found:Boolean;
Begin
Position:=1;
Found:=False;
While (not Found) And (position=size) Do
Begin
If Strings [position]=NewString Then
Begin
Linearsearch:=position;
Found:=True;
End; {If...Then}
Position:=position+1;
End; {While циклінің соңы}
If not Found Then linearsearch:=0;
End; {linearsearch}

Егер сіз көңіл аударсаңыз, While циклі мына екеуінің біреуі
орындалмағанша жүре береді: not Found өрнегі жалған болмағанша не position
мәні size-дан асып кетпегенше.
LinearSearch функциясының қолданылуы.
Біздің linearsearch функциямызда басты программада қалай қолдануға
болады? Мысалы, n соңды аттардан тұратын қатарда іздеу жүргізу керек
болсын, осы мақсатпен басты программада names қатары баяндалған, сонымен
қатар ізделінді есімді сақтайтын NewName айнымалысы да баяндалған. Онда
LinearSearch функциясын шақыратын программа үзіндісі былай болады:
Type StrType=String[20];
ArrayStrType=Array[1..100] Of StrType;
Var Names:ArrayStrType;
NewName:StrType;
N,location:Integer;
... ...
Location:=linearsearch(names,n);
If location0
Then WriteLn(NewName,’орны’,location)
Else WriteLn(newName,’табылған жоқ’)

Сұрыптау алгоритмі

Сұрыптаудың Шелл әдісі бойынша сұрыптау, Хоар әдісі бойынша сұрыптау,
таңдап сұрыптау сияқты түрлері бар.
Сұрыптау дегеніміз—берілген жиынның элементтерін белгілі бір
ережелерге сәйкес орналастыру. Оның негізгі көздеген мақсаты – сұрыпталған
жиыннан керек элементтерді іздеуді жеңілдету. Сұрыптауды көбіне массивтерді
және файлдарды сұрыптағанда көп қолданады. Бұл екеуін әдетте ішкі және
сыртқы сұрыптаулар деп ... жалғасы
Ұқсас жұмыстар
Сұрыптау және іздеу тәсілдері
Мәліметтер қоры көмегімен ақпаратты сақтау, іздеу, сұрыптау технологиясы
Іздеу алгоритмі
Сұрыптау. Мәліметтерді сұрыптау
Сұрыптау есептері. Сұрыптау алгоритмдері
Сұрыптау есептері, сұрыптау алгоритмдері
Сұрыптау есептері. Сұрыптау алгоритмі
Сұрыптау тәсілдері
Сұрыптау есептері, қою арқылы сұрыптау
Гетерогенді және өзгермелі сұрыптау
Пәндер

Қазақ тілінде жазылған рефераттар, курстық жұмыстар, дипломдық жұмыстар бойынша біздің қор №1 болып табылады.

Байланыс

Qazaqstan
Phone: 777 614 50 20
WhatsApp: 777 614 50 20
Email: info@stud.kz
Көмек / Помощь
Арайлым
Біз міндетті түрде жауап береміз!
Мы обязательно ответим!
Жіберу / Отправить

Рахмет!
Хабарлама жіберілді. / Сообщение отправлено.

Email: info@stud.kz

Phone: 777 614 50 20
Жабу / Закрыть

Көмек / Помощь