Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
esepter&teoria.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
13.77 Mб
Скачать

15.O(n2) күрделілігімен сұрыптау.

Қарастыруды өте жақсы белгілі «көпіршіктік сұрыптау» алгоритмінен бастайық. Алгоритмнің негізгі идеясы массивтің көрші элементтерін өзара қостап салыстырып қажет жағдайда орындарын ауыстыруда жатыр.Айқын болу үшін массивтің сол жағынан, яғни x1 элементінен бастайық және солдан оңға қарай жылжиық. Жылжу барысында xi,xi+1 жұптарын екі екіден салыстырып отырып,бірінші қадамның соңында ең үлкен(ең кіші) элемент ең оң жақ шеткі орын алады. Процессті қайталаймыз, келесі қадамда да массивтің ең сол жақ шетінен бастаймыз, ал ең оң жақтағы, яғни n-ші орында тұрған элемент тұрақты орын алып және екінші қадамда процеске қатыспайтынын ескереміз.Әр қадамда бір элементтен шегеріліп отырады, яғни массивтің сұрыпталған оң жақ шеті оңнан солға қарай жылжып отырады. Процесс массивтің соңғы элементі(ең сол жақ шеткі) сұрыпталған массивте өзінің орнына тұрғанша қайталана береді.

Жоғарыда келтірілген «көпіршіктік сұрыптау» алгоритмінің негізінде массивті реттеуге қажетті салыстырулар санының бағасын беруге болады. «Көпіршіктік сұрыптау» алгоритмі үшін салыстыру саны тең екенін есептеу қиын емес.Осыған байланысты «көпіршіктік сұрыптау» алгоритмі күделілігі O(n2) болатын алгоритмдер класына жатады.

Алгоритмнің программалық нұсқасын,дәлілек айтсақ bubblesort процедурасының денесін келтірейік.

Procedure bubblesort (a, n);

....

begin

for m:=n down to 2 do

begin r:=a[1];

for i:=2 to m do

if a[i]≤r then a[i-1]:=a[i]

else

begin a[i-1]:=r; r:=a[i]; end;

a[m]:=r;

end

end

Бұл процедураның стандарттық жүзеге асырылудан айырмашылығы бар.

«Көпіршіктік сұрыптау»,сондай-ақ барлық басқа да сұрыптау алгоритмдерінде массив элементтерінің алмасу саны бастапқы массивтің элементтерінің орналасуын тәуелді болып келеді.Яғни ,жалпы алғанда n элементтен құрылған массивте ауысу саны n!.

Массивтерді реттеу есептерінде түйінді рольді үшін төменгі бағанның бірі атқарды,дәлірек айтқанда .Ал салыстыру саны алмастыру санымен мынандай қарапайым теңсіздікпен байланысты 2l ,мұндағы l салыстыру саны.Мұнда біз массив элементерінің алғашқы орналасуының жаман варианттарына көңілімізді көбірек бөлеміз.Яғни алгоритмның жұмысының қортындысында алмастыру немесе салыстыру саны максимум болатын варианттарды қарастырамыз.Осыған қоса іздеу және сұрыптау алгоритмнің эффективтігінен бағалауда маңызды орын алатын эффективтіліктің «орташа» бағасы болады,яғни барлық алмастырулар бойынша алынған орташа бағасы.

Айтылған сұрыптау алгоритмін тиімділеу үшін бірнеші жолдар бар.Мысалы,алгоритм n элементі массивті реттеуде n-1 итерация қажет етеді.Бірақ массивтің элементтеріне байланысты,алгоритм оны n-1 итерациядан кем итерациядан реттеуі мүмкін.Осыны ескерсек,онда ондай жағдайларда тексеруді ұйымдастыруға болады.Әр итерацияда кем дегенде бір рет алмасу жүргізілсе,онда true (ақиқат) мәнін қабылдайтын қосымша логикалық айнымалы енгізуге болар еді.Сонымен қатар,әр жаңа итерацияның алдында бұл айнымалының мәнін қосымша тексеріп оыру қажет.

Көпіршіктеу сұрыптау алгоритмінің тиімділігін арттыру үшін процедураны келесі түрде ұйымдастыруды ұсынуға болады:әрбір келесі тізбектік айналу кезекпен және қарама-қарсы бағытта жүргізілсе.Сондай-ақ,егер аппараттық сүйемелдеу болса,онда бастапқы тізбектік есептеу процесін «конвейерлеп» отырып k көпіршіктерді бірінен кейін бірін жіберудің мәні бар.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]