- •(2 Саат)
- •Пайдаланыўшы программасында ҳәм эем ядында мс классификациялаў
- •Қадағалаў сораўлары
- •Пайдаланыўшы тәрепинен анықланатуғын түрлер Саналатуғын түр
- •Шегараланған яки диапазонлы түрлер
- •1. Векторлар
- •2. Массивлер
- •3. Жазыў
- •4. Кестелер
- •(Массалық хызмет көрсетиў түрлери)
- •1. Стеклер
- •Insert (q,X) элемент қосыў әмели.
- •Байланысқан дизимлер
- •Бир бағытлы дизимлер
- •Ҳалқа тәризли бир бағытлы дизим
- •Бир бағытлы дизимлер үстинде орынланатуғын әпиўайы әмеллер
- •Еки бағытлы дизим
- •Ҳалқа тәризли еки бағытлы дизим
- •Стеклерди бир бағытлы дизимлер жәрдеминде әмелге асырыў
- •Дизимге енгизиў мүмкин болған нәўбет әмеллери
- •Getnode, Freenode әмеллерин пайда етиў ҳәм босаған элементлерди утилизация қылыў
- •Дизимлер үстиндеги әмеллерге байланыслы мәселелер
- •1 Мәселе.
- •2 Мәселе.
- •Сызықлы емес байланысқан структуралар
- •Бинар тереклер
- •Бинар теректен элементти өшириў процедурасы
- •Қадағалаў сораўлары
- •1. Избе-из излеў
- •2. Индексли избе-из излеў
- •3. Избе-из излеўдиң эффективлиги
- •4. Индексли избе-из излеўдиң эффективлиги
- •6. Табылған элементти дизим басына қосыў арқалы кестени қайта тәртиплестириў
- •7.Транспозиция усылы
- •Қадағалаў сораўлары
- •Гилтлерди сәўлелендириў.
- •Сәўлелендириў функциясини таңлаў.
- •Тосқынлықты шешиў алгоритмлери
- •Қадағалаў сораўлары
- •Пайдаланылған әдебиятлар Тийкарғы
- •Қосымша
1. Избе-из излеў
Усы көринистеги излеў егер мағлыўматлар тәртипсиз яки олар структурасы анық емес болғанда қолланылады. Бунда мағлыўматлар пүтин кесте бойынша оператив ядта киши адрестен баслап, үлкен адреске шекем избе-из қарап шығылады.
Массивте избе-из излеў (search өзгериўши табылған элемент номерин сақлайды).
Паскал тилинде программа төмендегише болады:
for i:=1 to n do
if k[i] = key then
begin
search = i;
exit;
end;
search = 0;
exit;
Массивте избе-из излеў алгоритм эффективлигин орынлаған салыстырыўлар саны М менен анықлаў мүмкин. Мmin = 1, Mmax = n. Егер мағлыўматлар массив ячейкасында бир қыйлы итималлық пенен бөлистирилген болса, ол жағдайда Мср » (n + 1)/2 болады.
Егер керекли элемент кестеде болмаса ҳәм усы элементти кестеге қосыў керек болса, ол жағдайда жоқарыдағы программадағы ақырғы еки оператор төмендегиге алмастырылады.
Паскалда
n:=n+1;
k[n]:=key;
r[n]:=rec;
search:=n;
exit;
Егер мағлыўматлар кестеси бир бағытлы дизим көринисинде берилген болса, ол жағдайда избе-из излеў дизимде әмелге асырылады.
Алгоритмлер варианты:
Паскалда:
q:=nil;
p:=table;
while (p <> nil) do
begin
if p^.k = key then
begin
search = p;
exit;
end;
q := p;
p := p^.nxt;
end;
New(s);
s^.k:=key;
s^.r:=rec;
s.^nxt:= nil;
if q = nil then table = s
else q.^nxt = s;
search:= s;
exit
Дизимли структураның артықмашлығы соннан ибарат, дизимге элементти қосыў яки өшириў тез әмелге асады, бунда қосыў яки өшириў элемент санына байланыслы болмайды, массивте болса элементти қосыў яки өшириў шама менен барлық элементлердиң ярымын жылжытыўын талап етеди. Дизимде излеўдиң эффективлиги шама менен массив пенен бир қыйлы болады.
Улыўма алғанда избе-из излеў эффективлигин асырыў мүмкин.
Ойлайық, күн даўамында мағлыўматлар жыйналып, кейин ала олар қайта исленсин. Мағлыўматлар топланғаннан кейин олар сараланады.
2. Индексли избе-из излеў
Усы көринистеги излеў әмелге асырылып атырғанда еки кесте пайда болады: өз гилтине ийе мағлыўматлар кестеси (өсиў тәртибинде тәртиплестирилген) ҳәм индекслер кестеси, бул да мағлыўматлар гилтинен ибарат, бирақ бул гилтлер тийкарғы кестеден анық бир интервал арқалы алынған. (2-сызылма).
Басында берилген аргумент бойынша избе-из излеў индекслер кестесинен әмелге асырылады. Қашан биз берилген гилттен киши гилтти анықлағанымызда, тийкарғы кестеде излеўдиң төменги шегарасын орнатамыз - low, кейин болса жоқарғы шегараны - hi, яғный ( kind > key ).
Мәселен, key = 101.
Излеў толық кесте бойынша емес, бәлким low дан hi ге шекем даўам етеди.
2-Сызылма.
Программаға мысал:
Паскаль:
i:=1;
while (i <= m) and (kind[i] <= key) do
i=i+1;
if i = 1 then low:=1 else low:=pind[i-1];
if i = m+1 then hi:=n else hi:=pind[i]-1;
for j:=low to hi do
if key = k[j] then
begin
search:=j;
exit;
end;
search:=0;
exit;
3. Избе-из излеўдиң эффективлиги
Қәлеген излеўдиң эффективлиги кестедеги мағлыўматлардың гилтлери менен салыстырыў саны – С пенен баҳаланыўы мүмкин. Егер салыстырыўлар саны қанша киши болса, излеў алгоритми эффективлиги сонша жақсы болады.
Массивте избе-из излеўдиң эффективлиги төмендегише болады:
C = 1 ¸ n, C = (n + 1)/2.
Улыўма алғанда дизимде де эффективлик жоқарыдағыдай болады. Массивте де байланысқан дизимде де излеў эффективлиги бир қыйлы болсада, мағлыўматларды массив ҳәм дизим көринисте сүўретлеўдиң өзине тән кемшилик ҳәм артықмашлықлары бар. Излеўдиң мақсети - төмендеги процесслердиң орынланыўынан ибарат:
Табылған жазыўды оқыў.
Изленип атырған жазыў табылмаса, оны кестеге қосыў.
Табылған жазыўды өшириў.
Биринши процесс (излеўдиң өзи) массив ушын да дизим ушын да бир қыйлы болады. Екинши ҳәм үшинши процессте болса излеў дизимли структурада эффективрек болады (себеби массивте элементлерди жылжытыў керек).
Егер k массивте элементлерди жылжытыўлар саны болса, ол жағдайда k = (n + 1)/2 болады.