📄 quicksort.ps
字号:
017F5B010090B7C7FC023F15FC020715E0020092C8FC030713E048437CC151>111D<D90FFFEB0FFCB690383FFF8093B512E04B14F04B14F8923907FC7FFC92390FE0FFFEC6EC1F806DD93F0113FF6D133E157E157C15F8A215F07013FEA24BEB7FFCEF3FF8EF0FE04B90C7FCA55DB3B0B712F8A638417BC042>114 D<913A3FFF8007800107B5EAF81F011FECFE7F017F91B5FC48B8FC48EBE0014890C7121FD80FFC1407D81FF0801600485A007F167F49153FA212FF171FA27F7F7F6D92C7FC13FF14E014FF6C14F8EDFFC06C15FC16FF6C16C06C16F06C826C826C826C82013F1680010F16C01303D9007F15E0020315F0EC001F1500041F13F81607007C150100FC81177F6C163FA2171F7EA26D16F0A27F173F6D16E06D157F6D16C001FEEDFF806D0203130002C0EB0FFE02FCEB7FFC01DFB65A010F5DD8FE0315C026F8007F49C7FC48010F13E035437BC140>I<EC07E0A6140FA5141FA3143FA2147FA214FF5BA25B5B5B5B137F48B5FC000F91B512FEB8FCA5D8001F01E0C8FCB3AFEF0FC0AC171F6D6D1480A2173F6D16006F5B6D6D137E6D6D5B6DEBFF836EEBFFF86E5C020F14C002035C9126003FFCC7FC325C7DDA3F>I<902607FFC0ED3FFEB60207B5FCA6C6EE00076D826D82B3B3A260A360A2607F60183E6D6D147E4E7F6D6D4948806D6DD907F0ECFF806D01FFEB3FE06D91B55A6E1500021F5C020314F8DA003F018002F0C7FC51427BC05A>IE%EndDVIPSBitmapFontend%%EndProlog%%BeginSetup%%Feature: *Resolution 600dpiTeXDict begin%%PaperSize: a4%%EndSetup%%Page: 1 11 0 bop -118 81 a Fl(Quic)l(ksort)-118 300 y Fk(Quic)m(ksort)30b(is)g(a)f(general)h(sorting)f(algorithm)e(of)i(t)m(yp)s(e)i("Divide)e(and)h(Conquer".)43 b(It)31 b(is)e(based)i(on)f(splitting)-118421 y(the)42 b(arra)m(y)f(that)h(is)f(to)g(b)s(e)g(sorted)h(in)m(to)f(t)m(w)m(o)h(parts)g(and)g(sorting)e(the)i(t)m(w)m(o)g(parts)g(indep)s(enden)m(tly)-8 b(.)71 b(The)-118 541 y(algorithm)29b(has)k(the)g(follo)m(wing)d(form:)-118 769 y Fj(void)52b(quicksort)i(\(int)e(A[],)h(int)f(l,)f(int)h(r\))-118890 y({)-16 1010 y(if\(l)h(>=)f(r\))f(return;)-16 1130y(int)h(i)g(=)g(l;)-16 1251 y(int)g(j)g(=)g(r+1;)-161371 y(int)g(v)g(=)g(A[l];)-16 1492 y(for)g(\(;;\))-161612 y({)87 1732 y(while\(A[++i])i(<)e(v)f(&&)h(i)g(<)f(r\);)871853 y(while\(A[--j])j(>)e(v\);)87 1973 y(if\(i)g(>=)g(j\))g({)1892093 y(swap\(A,)i(l,)d(j\);)189 2214 y(break;)87 2334y(})87 2455 y(swap\(A,)i(i,)f(j\);)-16 2575 y(})-16 2695y(quicksort\(A,)j(l,)d(j-1\);)-16 2816 y(quicksort\(A,)j(j+1,)d(r\);)-118 2936 y(})-118 3242 y Fk(The)27 b(parameter)f Fj(l)gFk(and)g Fj(r)g Fk(b)s(ound)h(the)f(part)g(of)g(the)g(arra)m(y)g(inside)g(the)g(original)d(arra)m(y)j(that)g(is)g(to)g(b)s(e)g(sorted;)-118 3362 y(the)33 b(call)e Fj(quicksort\(A,)54 b(0,)e(A.size\(\)-1\))35 b Fk(sorts)f(the)f(whole)f(arra)m(y)-8 b(.)-118 3560y(The)36 b(crucial)e(part)h(of)f(the)i(metho)s(d)e(is)h(the)g(co)s(de)g(inside)g(the)g(in\014nite)f(lo)s(op)g Fj(for\(;;\))pFk(,)k(whic)m(h)d(rearranges)-118 3681 y(the)e(arra)m(y)g(in)e(suc)m(h)j(a)f(w)m(a)m(y)h(that)e(the)h(follo)m(wing)d(conditions)h(are)i(satis\014ed:)23 3909 y(i.)48 b(F)-8 b(or)32 b(an)g(arbitrary)gFj(j)g Fk(the)h(elemen)m(t)g Fj(A[j])g Fk(is)f(in)g(its)g(\014nal)g(p)s(osition)f(in)h(the)h(arra)m(y)-8 b(.)-4 4112 y(ii.)47b(All)31 b(elemen)m(ts)h Fj(A[l],)53 b Fi(:)17 b(:)g(:)33b Fj(,A[j-1])h Fk(are)f(smaller)d(than)j(or)f(equal)h(to)fFj(A[j])p Fk(.)-31 4316 y(iii.)46 b(All)31 b(elemen)m(ts)hFj(A[j+1],)54 b Fi(:)17 b(:)g(:)32 b Fj(,A[r])i Fk(are)f(greater)f(than)h(or)f(equal)h Fj(A[j])p Fk(.)-118 4621 y(In)42b(the)g(\014rst)g(step)h(the)f(splitting)e(elemen)m(t)hFj(v)52 b(=)f(A[l])43 b Fk(is)e(c)m(hosen,)46 b(whic)m(h)c(is)f(to)h(b)s(e)g(placed)f(in)g(its)g(\014nal)-118 4742 y(p)s(osition.)g(No)m(w)32b(the)f(searc)m(h)h(b)s(egins)f(from)f(the)h(left)g(un)m(til)e(an)i(elemen)m(t)g(is)g(found)g(that)g(is)f(greater)h(than)gFj(v)h Fk(.)-118 4862 y(Then)i(the)f(searc)m(h)h(b)s(egins)e(from)f(the)i(righ)m(t)f(un)m(til)f(an)i(elemen)m(t)f(is)g(found)h(that)f(is)g(smaller)f(than)h Fj(v)p Fk(.)-118 4983 y(If)d(the)g(p)s(oin)m(ters)gFj(i)g Fk(and)h Fj(j)f Fk(ha)m(v)m(e)h(not)f(y)m(et)h(met,)f(the)h(elemen)m(ts)f Fj(A[i])h Fk(and)f Fj(A[j])h Fk(are)f(exc)m(hanged,)j(otherwise)-118 5103 y(another)h(exc)m(hange)h(op)s(eration)d(ensures)k(condition)c(i.)42 b(and)33 b(the)g(in\014nite)f(lo)s(op)f(is)h(left)f(b)m(y)j(a)e Fj(break)p Fk(.)-118 5344 y(In)i(the)g(follo)m(wing)d(the)j(function)f(is)g(called)g(recursiv)m(ely)h(for)g(the)g(left)e(part)i(and)g(afterw)m(ards)g(for)f(the)h(righ)m(t)-118 5464y(part)e(of)g(the)h(arra)m(y)-8 b(.)44 b(Finally)30 b(the)j(arra)m(y)g(is)f(in)f(non-decreasing)i(order.)1865 6136 y(1)p eop%%Page: 2 22 1 bop -118 81 a Fh(Correctness)37 b(of)h(the)f(Algorithm)-118276 y Fg(Pr)-5 b(o)g(of.)-118 397 y Fk(It)33 b(has)f(to)h(b)s(e)g(sho)m(wn)g(that)g(the)g(follo)m(wing)d(holds)i(in)g(ev)m(ery)i(iteration)d(step:)1083 601 y Fj(A[l],)52 b Fi(:)17 b(:)g(:)68 bFj(A[i])52 b Ff(\024)g Fj(A[j],)h Fi(:)17 b(:)g(:)32b Fj(,A[r])p Fk(.)-118 892 y Fg(Induction)i(Base:)-1181047 y Fk(Before)f(the)g(\014rst)g(iteration)d(w)m(e)k(ha)m(v)m(e)gFj(i)51 b(=)h(l)33 b Fk(and)f Fj(j)52 b(=)g(r+1)p Fk(.)-1181288 y Fg(Induction)34 b(Step:)-118 1443 y Fk(The)f(transition)e(from)hFj(i)809 1458 y Fe(ol)q(d)933 1443 y Ff(!)g Fj(i)11161458 y Fe(new)1281 1443 y Fk(and)h Fj(j)1522 1458 y Fe(ol)q(d)16461443 y Ff(!)f Fj(j)1829 1458 y Fe(new)1962 1443 y Fk(.)-1181683 y(By)h(Induction)g(Hyp)s(othesis)g(w)m(e)h(ha)m(v)m(e:)9921888 y Fj(A[l],)52 b Fi(:)17 b(:)g(:)33 b Fj(,A[i)16511903 y Fe(ol)q(d)1748 1888 y Fj(])52 b Ff(\024)g Fj(A[j)21331903 y Fe(ol)q(d)2230 1888 y Fj(],)g Fi(:)17 b(:)g(:)33b Fj(,A[r])-118 2179 y Fk(By)g(construction)g(w)m(e)g(ha)m(v)m(e:)6542349 y Fj(A[i)807 2364 y Fe(ol)q(d)905 2349 y Fj(+1],)52b Fi(:)17 b(:)g(:)33 b Fj(,A[i)1513 2364 y Fe(new)16462349 y Fj(-1])52 b Ff(\024)g Fj(A[j)2133 2364 y Fe(new)22662349 y Fj(+1],)g Fi(:)17 b(:)g(:)33 b Fj(,A[j)2874 2364y Fe(ol)q(d)2971 2349 y Fj(+1])-118 2519 y Fk(It)g(follo)m(ws)e(that)853 2689 y Fj(A[l],)53 b Fi(:)17 b(:)g(:)33 b Fj(,A[i)15132704 y Fe(new)1646 2689 y Fj(-1])52 b Ff(\024)g Fj(A[j)21332704 y Fe(new)2266 2689 y Fj(+1],)g Fi(:)17 b(:)g(:)33b Fj(,A[r])-118 2860 y Fk(It)g(is)f(also)f(true)i(that)12273030 y Fj(A[i)1380 3045 y Fe(new)1513 3030 y Fj(])51b Ff(\025)29 b Fi(x)j Fk(und)i Fj(A[j)2157 3045 y Fe(new)22903030 y Fj(])51 b Ff(\024)28 b Fi(x)-118 3320 y Fk(After)33b(exc)m(hanging)g Fj(A[i)794 3335 y Fe(new)927 3320 yFj(])f Fk(and)h Fj(A[j)1353 3335 y Fe(new)1486 3320 yFj(])g Fk(w)m(e)g(ha)m(v)m(e:)956 3525 y Fj(A[l],)53b Fi(:)17 b(:)g(:)32 b Fj(,A[i)1615 3540 y Fe(new)17483525 y Fj(])52 b Ff(\024)g Fj(A[j)2133 3540 y Fe(new)22663525 y Fj(],)g Fi(:)17 b(:)g(:)32 b Fj(,A[r])p 3827 36954 66 v 3831 3633 59 4 v 3831 3695 V 3889 3695 4 66 v-118 4131 a Fh(Running)37 b(Time)f(\(w)m(orst-case\))-1184329 y Fk(W)-8 b(e)32 b(assume)h(that)f(w)m(e)h(ha)m(v)m(e)g(the)f(w)m(orst)h(case)g(if)e(the)h(arra)m(y)h(is)e(already)h(in)f(non-decreasing)h(order.)44 b(In)32 b(this)-118 4449y(case)j(in)e(ev)m(ery)i(recursiv)m(e)g(call)d(only)i(one)g(elemen)m(t)f(is)h(remo)m(v)m(ed)g(from)f(the)h(still)d(to)j(b)s(e)g(sorted)g(part)g(of)f(the)-118 4570 y(arra)m(y)g(\(see)g(animation\).)41b(The)33 b(resulting)f(running)g(time)f Fi(T)14 b Fk(\()pFi(n)p Fk(\))33 b(has)f(the)h(complexit)m(y)-8 b(.)13284973 y Fi(T)14 b Fk(\()p Fi(n)p Fk(\))28 b(=)f Ff(O)17914802 y Fd( )1920 4848 y Fe(n)1870 4878 y Fd(X)1884 5088y Fe(i)p Fc(=2)2030 4973 y Fi(i)c Fk(+)f Fi(n)g Ff(\001)gFi(c)2356 4802 y Fd(!)1561 5216 y Fk(=)27 b Ff(O)17915135 y Fd(\000)1836 5216 y Fi(n)1894 5175 y Fc(2)19345135 y Fd(\001)1865 6136 y Fk(2)p eop%%Page: 3 33 2 bop -118 81 a Fg(Pr)-5 b(o)g(of.)-118 202 y Fk(In)33b(general)f(w)m(e)h(ha)m(v)m(e:)743 422 y Fi(T)14 b Fk(\()pFi(n)p Fk(\))27 b(=)93 b(max)1079 483 y Fc(1)p Fb(\024)pFe(q)r Fb(\024)p Fe(n)p Fb(\000)p Fc(1)1391 422 y Ff(f)pFi(T)14 b Fk(\()p Fi(q)t Fk(\))21 b(+)h Fi(T)14 b Fk(\()pFi(n)22 b Ff(\000)h Fi(q)t Fk(\))e(+)h Fi(c)2289 437y Fc(1)2351 422 y Ff(\001)g Fi(n)p Ff(g)-118 749 y Fk(It)33b(is)f(sho)m(wn)i(no)m(w)f(that)f Fi(T)14 b Fk(\()p Fi(n)pFk(\))28 b Ff(\024)g Fk(\()p Fi(c)22 b Ff(\001)g Fi(n)1344712 y Fc(2)1383 749 y Fk(\))33 b(for)f Fi(c)27 b Ff(\025)1788681 y Fi(c)1830 696 y Fc(1)p 1788 726 82 4 v 1804 817a Fk(2)1901 749 y Ff(\001)2026 681 y Fi(n)2084 696 yFc(0)p 1961 726 229 4 v 1961 817 a Fi(n)22 b Ff(\000)hFk(1)2232 749 y(for)32 b Fi(n)2439 764 y Fc(0)2511 749y Fk(big)g(enough)h(holds.)743 1042 y Fi(T)14 b Fk(\()pFi(n)p Fk(\))27 b Ff(\024)93 b Fk(max)1080 1103 y Fc(1)pFb(\024)p Fe(q)r Fb(\024)p Fe(n)p Fb(\000)p Fc(1)13921042 y Ff(f)p Fi(T)14 b Fk(\()p Fi(q)t Fk(\))22 b(+)gFi(T)14 b Fk(\()p Fi(n)22 b Ff(\000)g Fi(q)t Fk(\))g(+)gFi(c)2291 1057 y Fc(1)2353 1042 y Ff(\001)f Fi(n)p Ff(g)9751215 y Fc(I.H.)995 1298 y Ff(\024)113 b Fk(max)1120 1359y Fc(1)p Fb(\024)p Fe(q)r Fb(\024)p Fe(n)p Fb(\000)pFc(1)1432 1298 y Ff(f)p Fi(c)22 b Ff(\001)g Fi(q)16431257 y Fc(2)1704 1298 y Fk(+)g Fi(c)g Ff(\001)g Fk(\()pFi(n)h Ff(\000)f Fi(q)t Fk(\))2219 1257 y Fc(2)2281 1298y Fk(+)g Fi(c)2421 1313 y Fc(1)2482 1298 y Ff(\001)gFi(n)p Ff(g)975 1499 y Fk(=)28 b Fi(c)22 b Ff(\001)87b Fk(max)1193 1560 y Fc(1)p Fb(\024)p Fe(q)r Fb(\024)pFe(n)p Fb(\000)p Fc(1)1504 1499 y Ff(f)p Fi(q)26 b Fk(+)c(\()pFi(n)h Ff(\000)f Fi(q)t Fk(\))2024 1458 y Fc(2)2086 1499y Ff(\000)g Fk(2)p Fi(q)k Ff(\001)c Fk(\()p Fi(n)g Ff(\000)hFi(q)t Fk(\))p Ff(g)e Fk(+)h Fi(c)2867 1514 y Fc(1)29291499 y Ff(\001)g Fi(n)975 1701 y Fk(=)28 b Fi(c)22 bFf(\001)g Fi(n)1251 1660 y Fc(2)1312 1701 y Ff(\000)hFk(2)p Fi(c)f Ff(\001)96 b Fk(min)1575 1762 y Fc(1)pFb(\024)p Fe(q)r Fb(\024)p Fe(n)p Fb(\000)p Fc(1)18871701 y Ff(f)p Fi(q)25 b Ff(\001)d Fk(\()p Fi(n)h Ff(\000)fFi(q)t Fk(\))p Ff(g)g Fk(+)g Fi(c)2570 1716 y Fc(1)26311701 y Ff(\001)g Fi(n)975 1902 y Fk(=)28 b Fi(c)22 bFf(\001)g Fi(n)1251 1861 y Fc(2)1312 1902 y Ff(\000)hFk(2)p Fi(c)f Ff(\001)g Fk(1\()p Fi(n)g Ff(\000)g Fk(1\))g(+)gFi(c)2090 1917 y Fc(1)2152 1902 y Ff(\001)g Fi(n)-1182147 y Fk(F)-8 b(or)32 b Fi(n)g Fk(big)g(enough)h(it)f(follo)m(ws)f(that)743 2410 y Fi(T)14 b Fk(\()p Fi(n)p Fk(\))27 b(=)hFi(c)22 b Ff(\001)g Fi(n)g Ff(\000)h Fk(2)e Ff(\001)15032342 y Fi(c)1545 2357 y Fc(1)p 1503 2387 82 4 v 15202478 a Fk(2)1617 2410 y Ff(\001)1762 2342 y Fi(n)p 16772387 229 4 v 1677 2478 a(n)h Ff(\000)h Fk(1)1937 2410y Ff(\001)f Fk(\()p Fi(n)h Ff(\000)f Fk(1\))g(+)g Fi(c)24542425 y Fc(1)2516 2410 y Ff(\001)f Fi(n)975 2604 y Fk(=)28b Fi(c)22 b Ff(\001)g Fi(n)1251 2563 y Fc(2)p 3827 28244 66 v 3831 2761 59 4 v 3831 2824 V 3889 2824 4 66 v-118 3139 a Fk(In)31 b(practice)g(the)g(algorithm)d(is)i(used)i(v)m(ery)g(often.)43 b(One)31 b(reason,)h(among)e(others,)i(is)e(the)h(a)m(v)m(erage)h(running)-118 3260 y(time,)f(whic)m(h)i(is)f(examined)h(in)e(the)i(follo)m(wing.)-118 3583 y Fh(Theorem)k(1.)49b Fg(Quicksort)43 b(ne)-5 b(e)g(ds)43 b(on)g(aver)-5b(age)42 b Fk(2)17 b(log)f Fi(n)29 b Fk(+)g(\002\(1\))43b Fg(many)g(c)-5 b(omp)g(arisons.)69 b(By)43 b(r)-5 b(andomize)g(d)-1183704 y(quicksort)45 b(\(r)-5 b(andomly)44 b(exchanging)f(two)i(elements)f(in)g(the)h(stil)5 b(l)45 b(to)g(b)-5 b(e)45b(sorte)-5 b(d)44 b(p)-5 b(art)45 b(of)g(the)g(arr)-5b(ay\))45 b(the)-118 3824 y(worst)35 b(c)-5 b(ase)34b(is)g(avoide)-5 b(d)34 b(with)h(high)f(pr)-5 b(ob)g(ability.)-1184148 y(Pr)g(o)g(of.)523 4407 y Fi(QS)6 b(A)p Fk(\()pFi(n)p Fk(\))28 b(=)f Fi(n)c Fk(+)f(2)g(+)1452 4339 y(1)p1362 4384 229 4 v 1362 4
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -