www.wikidata.uk-ua.nina.az
Shvidke sortuvannya angl Quick Sort algoritm sortuvannya rozroblenij Toni Goarom yakij ne potrebuye dodatkovoyi pam yati i vikonuye u serednomu O n log n displaystyle O n log n operacij Odnak u najgirshomu vipadku robit O n 2 displaystyle O n 2 porivnyan Pozayak algoritm vikoristovuye duzhe prosti cikli i operaciyi vin pracyuye shvidshe za inshi algoritmi sho mayut taku zh asimptotichnu ocinku skladnosti Napriklad zazvichaj bilsh nizh udvichi shvidshij porivnyano z sortuvannyam zlittyam Shvidke sortuvannyaalgoritm u diyi pid chas sortuvannya spisku chiselKlas Algoritm sortuvannyaStruktura danih RizniNajgirsha shvidkodiya O n 2 displaystyle O n 2 Najkrasha shvidkodiya O n log n displaystyle O n log n Serednya shvidkodiya O n log n displaystyle O n log n Prostorova skladnist u najgirshomu vipadku Zalezhit vid realizaciyiOptimalnij InkoliStabilnij NiIdeya algoritmu polyagaye v perestavlyanni elementiv masivu takim chinom shob jogo mozhna bulo rozdiliti na dvi chastini i kozhnij element z pershoyi chastini buv ne bilshij za bud yakij element z drugoyi Vporyadkuvannya kozhnoyi z chastin vidbuvayetsya rekursivno Algoritm shvidkogo sortuvannya mozhe buti realizovanij yak u masivi tak i v dvozv yaznomu spisku Shvidke sortuvannya ye algoritmom na osnovi porivnyan i ne ye stabilnim Zmist 1 Istoriya 2 Psevdokod algoritmu 2 1 Klasichnij algoritm 2 2 Suchasnij algoritm 3 Analiz 3 1 Najgirshe rozbittya 3 2 Najkrashe rozbittya 3 3 Serednij vipadok 4 Modifikaciyi 4 1 Randomizovannij algoritm 5 Realizaciya movoyu Pascal 6 Realizaciya movoyu C 7 Realizaciya movoyu JavaScript 3 8 Realizaciya movoyu Ruby 4 9 Primitki 10 Literatura 11 Div takozh 12 PosilannyaIstoriya RedaguvatiAlgoritm shvidkogo sortuvannya bulo rozrobleno Toni Goarom u 1962 pid chas roboti u malenkij britanskij kompaniyi Elliott Brothers en 1 Psevdokod algoritmu RedaguvatiCya stattya potrebuye uporyadkuvannya dlya vidpovidnosti standartam yakosti Vikipediyi Bud laska dopomozhit polipshiti cyu stattyu Mozhlivo storinka obgovorennya mistit zauvazhennya shodo potribnih zmin Klasichnij algoritm Redaguvati Cej rozdil ne mistit posilan na dzherela Vi mozhete dopomogti polipshiti cej rozdil dodavshi posilannya na nadijni avtoritetni dzherela Material bez dzherel mozhe buti piddano sumnivu ta vilucheno sichen 2022 U klasichnomu varianti zaproponovanomu Goarom z masivu obirali odin element a ves masiv rozbivali na dvi chastini za principom u pershij chastini ne bilshi za danij element v drugij ne menshi za danij element Procedura Q u i c k s o r t A p q displaystyle Quicksort A p q nbsp zdijsnyuye chastkove vporyadkuvannya masivu A displaystyle A nbsp z p go po q j indeks Q u i c k s o r t A p q displaystyle Quicksort A p q nbsp 1 if p q displaystyle p geq q nbsp return 2 r A p displaystyle r gets A p nbsp 3 i p displaystyle i gets p nbsp 4 j q 1 displaystyle j gets q 1 nbsp 5 while i lt j displaystyle i lt j nbsp do 6 repeat 7 i i 1 displaystyle i gets i 1 nbsp 8 until A i r displaystyle A i geq r nbsp 9 repeat 10 j j 1 displaystyle j gets j 1 nbsp 11 until A j r displaystyle A j leq r nbsp 12 if i lt j displaystyle i lt j nbsp 13 then Swap A i A j displaystyle A i leftrightarrow A j nbsp 14 Q u i c k s o r t A p j displaystyle Quicksort A p j nbsp 15 Q u i c k s o r t A j 1 q displaystyle Quicksort A j 1 q nbsp Suchasnij algoritm Redaguvati Nini v standartnih bibliotekah vikoristovuyut taku realizaciyu algoritmu 2 P a r t i t i o n A p q displaystyle Partition A p q nbsp 1 x A q displaystyle x gets A q nbsp 2 i p 1 displaystyle i gets p 1 nbsp 3 for j p displaystyle j gets p nbsp to q 1 displaystyle q 1 nbsp 4 do if A j x displaystyle A j leq x nbsp 5 then 6 i i 1 displaystyle i gets i 1 nbsp 7 Swap A i A j displaystyle A i leftrightarrow A j nbsp 8 Swap A i 1 A q displaystyle A i 1 leftrightarrow A q nbsp 8 return i 1 displaystyle i 1 nbsp Funkciya Partition povertaye indeks z opornim elementom sho rozdilyaye masiv na dvi chastini livu elementi yakoyi menshe opornogo elementu i pravu elementi yakoyi bilshe opornogo elementu Vseredini funkciyi opornim elementom vibirayetsya ostannij element masivu i obhid zdijsnyuyetsya pochinayuchi z pershogo elementu pririvnyuyuchi jogo do opornogo Q u i c k s o r t A p q displaystyle Quicksort A p q nbsp 1 if p q displaystyle p geq q nbsp return 2 i P a r t i t i o n A p q displaystyle i gets Partition A p q nbsp 3 Q u i c k s o r t A p i 1 displaystyle Quicksort A p i 1 nbsp 4 Q u i c k s o r t A i 1 q displaystyle Quicksort A i 1 q nbsp Analiz RedaguvatiChas roboti algoritmu sortuvannya zalezhit vid zbalansovanosti sho harakterizuye rozbittya Zbalansovanist u svoyu chergu zalezhit vid togo yakij element obrano yak opornij vidnosno yakogo elementa vikonuyetsya rozbittya Yaksho rozbittya zbalansovane to asimptotichno algoritm pracyuye tak samo shvidko yak i algoritm sortuvannya zlittyam U najgirshomu vipadku asimptotichna povedinka algoritmu nastilki zh pogana yak i v algoritmu sortuvannya vklyuchennyam Najgirshe rozbittya Redaguvati Najgirsha povedinka maye misce u tomu vipadku koli procedura sho vikonuye rozbittya porodzhuye odnu pidzadachu z n 1 elementom a drugu z 0 elementami Nehaj take nezbalansovane rozbittya vinikaye pri kozhnomu rekursivnomu vikliku Dlya samogo rozbittya potriben chas 8 n displaystyle Theta n nbsp Todi rekurentne spivvidnoshennya dlya chasu roboti mozhna zapisati tak T n T n 1 T 0 8 n T n 1 8 n displaystyle T n T n 1 T 0 Theta n T n 1 Theta n nbsp Rozv yazkom takogo spivvidnoshennya ye T n 8 n 2 displaystyle T n Theta n 2 nbsp Najkrashe rozbittya Redaguvati V najkrashomu vipadku procedura Partition dilit zadachu na dvi pidzadachi rozmir kozhnoyi ne perevishuye n 2 Chas roboti opisuyetsya nerivnistyu T n 2 T n 2 8 n displaystyle T n leq 2T n 2 Theta n nbsp Todi T n O n log n displaystyle T n O n log n nbsp asimptotichno najkrashij chas Serednij vipadok Redaguvati Matematichne ochikuvannya chasu roboti algoritmu na vsih mozhlivih vhidnih masivah ye O n log n displaystyle O n log n nbsp tobto serednij vipadok blizhchij do najkrashogo Modifikaciyi RedaguvatiV serednomu algoritm pracyuye duzhe shvidko ale na praktici ne vsi mozhlivi vhidni masivi mayut odnakovu imovirnist Todi shlyahom dodannya randomizaciyi vdayetsya otrimati serednij chas roboti v bud yakomu vipadku Randomizovannij algoritm Redaguvati V randomizovannomu algoritmi pri kozhnomu rozbitti vipadkovij element obirayetsya yak opornij R a n d o m i z e d P a r t i t i o n A p q displaystyle Randomized Partition A p q nbsp 1 i R a n d o m p q displaystyle i leftarrow Random p q nbsp 2 Pominyati A i A q displaystyle A i leftrightarrow A q nbsp 9 return P a r t i t i o n A p q displaystyle Partition A p q nbsp R a n d o m i z e d Q u i c k s o r t A p q displaystyle Randomized Quicksort A p q nbsp 1 if p q displaystyle p geq q nbsp return 2 i R a n d o m i z e d P a r t i t i o n A p q displaystyle i gets Randomized Partition A p q nbsp 3 R a n d o m i z e d Q u i c k s o r t A p i 1 displaystyle Randomized Quicksort A p i 1 nbsp 4 R a n d o m i z e d Q u i c k s o r t A i 1 q displaystyle Randomized Quicksort A i 1 q nbsp Realizaciya movoyu Pascal RedaguvatiCej rozdil ne mistit posilan na dzherela Vi mozhete dopomogti polipshiti cej rozdil dodavshi posilannya na nadijni avtoritetni dzherela Material bez dzherel mozhe buti piddano sumnivu ta vilucheno zhovten 2016 Cya procedura pislya yiyi ogoloshennya sortuye masiv mas yakij skladayetsya z elementiv tipu integer Procedure QuickSort first last integer Var v x left right integer begin left first right last v mas left right div 2 while left lt right do begin while mas left lt v do left left 1 while mas right gt v do right right 1 if left lt right then begin x mas left mas left mas right mas right x left left 1 right right 1 end end if first lt right then QuickSort first right if left lt last then QuickSort left last end Realizaciya movoyu C RedaguvatiCej rozdil ne mistit posilan na dzherela Vi mozhete dopomogti polipshiti cej rozdil dodavshi posilannya na nadijni avtoritetni dzherela Material bez dzherel mozhe buti piddano sumnivu ta vilucheno traven 2021 Cya funkciya sortuye masiv array sho mistit n elementiv de right n 1 right left 1 1 dlya togo abi u vikliku QuickSort array 0 1 opornim elementom vibiravsya pravij element sho ne dopustit sprobu dekrementuvati j koli cya zminna vzhe rivna 0 template lt typename T gt void QuickSort T array size t const left size t const right static T temp size t i left j right T pivot array left right left 1 gt gt 1 while i lt j while array i lt pivot i while array j gt pivot j if i lt j temp array i array i array j array j temp i j if j gt left QuickSort array left j if i lt right QuickSort array i right Realizaciya movoyu JavaScript 3 RedaguvatiFunkciya quickSort prijmaye masiv arr yak vhidnij parametr i povertaye vidsortovanij masiv function quickSort arr if arr length lt 1 return arr const pivot arr Math floor arr length 2 const less const greater for let i 0 i lt arr length i if arr i lt pivot less push arr i else if arr i gt pivot greater push arr i return quickSort less pivot quickSort greater Priklad vikoristannya const array 5 3 1 6 2 4 const sortedArray quickSort array console log sortedArray Rezultat 1 2 3 4 5 6 Realizaciya movoyu Ruby 4 RedaguvatiMetod quick sort prijmaye masiv arr yak vhidnij parametr i povertaye vidsortovanij masiv def quick sort arr return arr if arr length lt 1 pivot arr arr length 2 less greater arr each do element if element lt pivot less lt lt element elsif element gt pivot greater lt lt element end end return quick sort less pivot quick sort greater end Priklad vikoristannya array 5 3 1 6 2 4 sorted array quick sort array puts sorted array Rezultat 1 2 3 4 5 6 Primitki Redaguvati Timeline of Computer History 1960 Computer History Museum Arhiv originalu za 25 chervnya 2013 Procitovano 5 sichnya 2009 Kormen Tomas Lejzerson Charlz Rivest Ronald Stajn Kliford 2019 Rozdil 7 Shvidke sortuvannya Vstup do algoritmiv vid 3 K I S s 186 206 ISBN 978 617 684 239 2 Priklad QuickSort algoritmu JavaScript tseivo com Procitovano 5 lipnya 2023 Priklad QuickSort algoritmu Ruby tseivo com Procitovano 5 lipnya 2023 Literatura RedaguvatiKormen Tomas Lejzerson Charlz Rivest Ronald Stajn Kliford 2019 Vstup do algoritmiv vid 3 K I S ISBN 978 617 684 239 2 Div takozh RedaguvatiSpisok algoritmivPosilannya RedaguvatiRealizaciya algoritmu shvidkogo sortuvannya riznimi movami programuvannya Arhivovano 7 lyutogo 2015 u Wayback Machine Realizaciyi algoritmu shvidkogo sortuvannya riznimi movami programuvannya v stili gramotnogo programuvannya Arhivovano 9 travnya 2008 u Wayback Machine Animated Sorting Algorithms Quick Sort grafichna demonstraciya roboti algoritmu Animated Sorting Algorithms 3 Way Partition Quick Sort grafichna demonstraciya algoritmu shvidkogo sortuvannya z rozbittyam masivu na tri chastini Naochna demonstraciya shvidkogo sortuvannya ugorskimi tancyuristami Arhivovano 7 chervnya 2014 u Wayback Machine Interactive Tutorial for Quicksort Arhivovano 3 lyutogo 2009 u Wayback Machine Analyze Quicksort in an online Javascript IDE Javascript Quicksort and Bubblesort Quicksort applet Multidimensional quicksort in Java Quicksort tutorial with illustrated examples Otrimano z https uk wikipedia org w index php title Shvidke sortuvannya amp oldid 40487639