|
Topilgan elementni ro’yxat boshiga qo’yish orqali jadvalni qayta tartiblash
|
bet | 73/163 | Sana | 16.01.2024 | Hajmi | 18,84 Mb. | | #138868 |
Bog'liq O zbekiston respublikasi oliy va o rta maxsus ta lim vazirligi t5.1 Topilgan elementni ro’yxat boshiga qo’yish orqali jadvalni qayta tartiblash
Mazkur usulni mag’zi shundan iboratki, berilgan kalitga teng kalitli element ro’yxatda birinchi element deb o’zlashtiriladi, qolganlari esa suriladi.
Keltirilgan algoritm ro’yxat uchun ham massiv uchun xam o’rinli. Biroq bu algoritm massiv uchun tavsiya qilinmaydi, sababi elementlarni o’rinlashtirishga ko’rsatkichlarni o’rinlashtirishdan ko’ra ancha ko’p vaqt talab qiladi.
Ro’yxatni qayta tartiblash algoritmi:
Paskal:
q:=nil;
p:=table;
while (p <> nil) do
begin
if key = p^.k then
begin
if q = nil
then 'o’rinlashtirish shart emas'
search := p;
exit;
end;
q^.nxt := p^.nxt;
p^.nxt := table;
table := p;
exit;
end;
q := p;
p := p^.nxt;
end;
search := nil;
exit;
Transpozisiya usuli
Ushbu usulda topilgan element ro’xatda bitta oldingi element bilan o’rin almashtiriladi. Agarda mazkur elementga ko’p murojaat qilinsa, bittadan oldinga surilib borib natijada ro’yxat boshida bo’ladi.
Chizma. Qo’shni elementlarni o’rnini almashtirish
r – ishchi ko’rsatkich
q – yordamchi ko’rsatkich, r dan bitta qadam orqada bo’ladi
s - yordamchi ko’rsatkich, q dan ikkita qadam orqada bo’ladi
Transpozisiya usuli algoritmi:
Paskal:
s:=nil;
q:=nil;
p:=table;
while (p <> nil) do
begin
if key = p^.k then
‘transponerlaymiz
begin
if q = nil then
begin
‘o’rinlashtirilmaydi
search:=p;
exit;
end;
q^.nxt:=p^.nxt;
p^.nxt:=q;
if s = nil then
table := p;
else
begin
s^.nxt := p;
end;
search:=p;
exit;
end; end;
search:=nil; exit;
Ushbu usul nafaqat ro’yxatda, balki massivda xam qulay (sababi faqatgina ikkita yonma-yon turgan element o’rin almashtiriladi).
|
| |