If969 - Algoritmos de Ordenação: Quick Sort

Embed Size (px)

Citation preview

  • 8/4/2019 If969 - Algoritmos de Ordenao: Quick Sort

    1/29

    Kcabvlx`b~hjBvhjekb7[zlnd^bvx

    NjexvbhjLeobv`-nk

    Zeljv~lhkhjOjhjvkchjYjvek`fznb

    ^l~xj`k~hjLeobv`kb

    _lelnlz~Nkvhb~bAkvnlk

    naInle%zoyj%fv

    69;;_lelnlz~Nkvhb~bAkvnlk

  • 8/4/2019 If969 - Algoritmos de Ordenao: Quick Sort

    2/29

    [zlnd^bvx

    Klhlkhb{zlnd~bvxxj`nb`bfk~jhbl~yvlenylb~#k~~l`nb`bb`jvaj~bvx7

    Vjnzv~b Kfbvhkaj`hllhlvykvknbe{zl~xkv

    Kcabvlx`b~jJ~xvzxzvkhjHkhb~Kcabvlx`bhjBvhjekb7[zlnd^bvx69;;_lelnlz~Nkvhb~bAkvnlk

    6

    ;% Hllhlv b yvbfcj`k j` ~zfyvbfcj`k~ -`jebvj~,

    6% Vj~bcjv j~xk~ ebk~ le~xenlk~ -vjnzv~lk`jexj,

    >% Gzexkv k~ ~bczj~ ykvnlkl~ ykvk knmkv k ~bczbhb yvbfcj`k yvlenlykc%

  • 8/4/2019 If969 - Algoritmos de Ordenao: Quick Sort

    3/29

    [zlnd^bvx

    B[zld~bvxz`kcabvlx`bhjbvhjek`jexb{zjebylbvnk~b-e6,

    Nbexzhb#ekyv-nk#ajvkc`jexjk`jcmbvbyb+ Hjlhbk~zkkcxkjnlenlkebnk~b`hlb7-ecae,

    Bkcabvlx`b[zlnd~bvxz-clwkkx-nkhjhllhlvjnbe{zl~xkv

    J~xkx-nkhllhlhkj`xv~ykvxj~ykvkkvjkclwkbhbbvhjek`jexbhbkvvkegbKTy%%vP

    Kcabvlx`b~jJ~xvzxzvkhjHkhb~Kcabvlx`bhjBvhjekb7[zlnd^bvx69;;_lelnlz~Nkvhb~bAkvnlk

    >

  • 8/4/2019 If969 - Algoritmos de Ordenao: Quick Sort

    4/29

    HllhlvykvkNbe{zl~xkv

    Hllhlv7 KTy%%vPykv-nlbekhbj`hbl~~zfkvvkegb~#KTy%%{;PjKT{

    $;%%vP

    Nkhkjcj`jexbhjKTy%%{;P`jebvbzlazkc{zjKT{P% KT{P`jebvbzlazkckxbhb~b~jcj`jexb~hjKT{$;%%vP Behlnj{nkcnzckhbnb`bykvxjhbyvbnjhl`jexbhj

    ykv-nlbek`jexb

    Kcabvlx`b~jJ~xvzxzvkhjHkhb~Kcabvlx`bhjBvhjekb7[zlnd^bvx69;;_lelnlz~Nkvhb~bAkvnlk

    8

  • 8/4/2019 If969 - Algoritmos de Ordenao: Quick Sort

    5/29

    HllhlvykvkNbe{zl~xkv

    Nbe{zl~xkv7 B~hbl~~zfkvvkegb~KTy%%{;PjKT{$;%%vP~b

    bvhjekhb~ybvnmk`khk~vjnzv~lk~kb{zld~bvx

    Nb`flekv7 B~kvvkegb~~bbvhjekhb~cbnkc`jexj+ Ebmxvkfkcmbykvknb`flecb7BkvvkegbK

    Ty%%vPj~xlexjlvk`jexjbvhjekhb+

    Kcabvlx`b~jJ~xvzxzvkhjHkhb~Kcabvlx`bhjBvhjekb7[zlnd^bvx69;;_lelnlz~Nkvhb~bAkvnlk

    :

  • 8/4/2019 If969 - Algoritmos de Ordenao: Quick Sort

    6/29

    [zlnd^bvx

    J`nkhklxjvkbj~nbcmkz`kyb~lbhb~zfkvvkegbyl,7ky

    Klhlkf~lnkbvakelwkvb~jcj`jexb~hb~zfkvvkegbhjobv`k{zj7 Xbhb~b~jcj`jexb~kj~{zjvhkhjk

    d~b`jebvj~bz

    lazkl~kky

    Xbhb~b~jcj`jexb~khlvjlxkhjkd~b`klbvj~{zjky Behjdkyb~lbnbvvjxkhbyl

    Vjyj-vbyvbnj~~bykvkb~zfkvvkegbkj~{zjvhkhjd#jykvkb~zfkvvkegbkhlvjlxkhjd

    ?Kcabvlx`b~jJ~xvzxzvkhjHkhb~Kcabvlx`bhjBvhjekb7[zlnd^bvx69;;_lelnlz~Nkvhb~bAkvnlk

  • 8/4/2019 If969 - Algoritmos de Ordenao: Quick Sort

    7/29

    [zlnd~bvxY~jzhbNhlab

    Ykvkbvhjekvz`kvvkegbK#nmk`khblelnlkc`jexjkozeb[ZLND^BVX-K#;#nb`yvl`jexbTKP,

    J`y|xmbe#~jvlkhj9kxnb`yvl`jexbTKP;

    Kcabvlx`b~jJ~xvzxzvkhjHkhb~Kcabvlx`bhjBvhjekb7[zlnd^bvx69;;_lelnlz~Nkvhb~bAkvnlk

    1

  • 8/4/2019 If969 - Algoritmos de Ordenao: Quick Sort

    8/29

    NB@BOZENLBEKBYKVXLNLBEK@JEXB222

    =Kcabvlx`b~jJ~xvzxzvkhjHkhb~Kcabvlx`bhjBvhjekb7[zlnd^bvx69;;_lelnlz~Nkvhb~bAkvnlk

  • 8/4/2019 If969 - Algoritmos de Ordenao: Quick Sort

    9/29

    Kcabvlx`b~jJ~xvzxzvkhjHkhb~Kcabvlx`bhjBvhjekb7[zlnd^bvx69;;_lelnlz~Nkvhb~bAkvnlk

    > ; : 6 1 = ? 8

    Nbe6ezk

    > ; : 6 1 = ? 8 ;%J~nbcmjbyl

    6%;Kehknb`cjcj

    vlamx

    cj cj

    vlamxvlamxvlamx

    > ; 6 : 1 = ? 86%>~qkycj#vlamx,jvjyjxj6%;

    vlamx cj

    > ; : 6 1 = ? 8

    6%6Kehknb`vlamx

    > ; 6 : 1 = ? 8

    vlamxvlamx

    6%>^klhbcbbyj~qkyyl#cj,

  • 8/4/2019 If969 - Algoritmos de Ordenao: Quick Sort

    10/29

    Ykv\nlbek`jexb

    Kabvk{zjbylj~xekyb~lbnbvvjxkhjj`b~nmk`kvvjnzv~lk`jexjb~bvxykvkbkvvkegbhkj~{zjvhkjj`~jazlhkykvkbkvvkegbhkhlvjlxk

    ;9

    > ; : 6 1 = ? 8

    > ; 6 8 1 = ? :

    Kcabvlx`b~jJ~xvzxzvkhjHkhb~Kcabvlx`bhjBvhjekb7[zlnd^bvx69;;_lelnlz~Nkvhb~bAkvnlk

  • 8/4/2019 If969 - Algoritmos de Ordenao: Quick Sort

    11/29

    Kcabvlx`b~jJ~xvzxzvkhjHkhb~Kcabvlx`bhjBvhjekb7[zlnd^bvx69;;_lelnlz~Nkvhb~bAkvnlk

    ;;

    > ; 6 8 1 = ? : >Bvhjek~zfkvvk|kj~{zjvhkvjnzv~%,

    > ; 6 8 1 = ? :

    %%%

    ; 6 > 8 1 = ? :

    ; 6 > 8 1 = ? : 8Bvhjek~zfkvvk|khlvjlxkvjnzv~%,

    %%%

    ; 6 > 8 : ? 1 =

  • 8/4/2019 If969 - Algoritmos de Ordenao: Quick Sort

    12/29

    Kcabvlx`b~jJ~xvzxzvkhjHkhb~Kcabvlx`bhjBvhjekb7[zlnd^bvx69;;_lelnlz~Nkvhb~bAkvnlk

    ;6

    9 :9 19

    9 :9 19

    :9 ;99 69 ?9 =9 ;;9 ;69 89 ;9 >9 9 69 ?9 =9 ;;9 ;69 89 ;9 ;99 9 69 ?9 ;9 ;;9 ;69 89 =9 ;99 9 69 ?9 ;9 89 ;69 ;;9 =9 ;99 9 69 ?9 ;9 89 19 ;;9 =9 ;99

  • 8/4/2019 If969 - Algoritmos de Ordenao: Quick Sort

    13/29

    Kcabvlx`b~jJ~xvzxzvkhjHkhb~Kcabvlx`bhjBvhjekb7[zlnd^bvx69;;_lelnlz~Nkvhb~bAkvnlk

    ;>

    :9 >9 69 ?9 ;9 89 19 ;;9 =9 ;99 9 69 ?9 ;9 89 19 ;;9 =9 ;99 9 69 ?9 :9 89 19 ;;9 =9 ;99 9 69 89 :9 ?9 19 ;;9 =9 ;99 9 69 89 :9 ?9 19 ;;9 =9 ;99 9 69 89 :9 ?9 19 ;;9 =9 ;99 9 89 :9 ?9 19 ;;9 =9 ;99

  • 8/4/2019 If969 - Algoritmos de Ordenao: Quick Sort

    14/29

    Kcabvlx`b~jJ~xvzxzvkhjHkhb~Kcabvlx`bhjBvhjekb7[zlnd^bvx69;;_lelnlz~Nkvhb~bAkvnlk

    ;8

    ;9 69 >9 89 :9 ?9 19 ;;9 =9 ;99 9 89 :9 ?9 19 ;;9 =9 ;99 9 89 :9 ?9 19 ;;9 =9 ;99 9 89 :9 ?9 19 ;;9 =9 ;99 9 89 :9 ?9 19 ;;9 =9 ;99 9 89 :9 ?9 19 ;;9 =9 ;99

  • 8/4/2019 If969 - Algoritmos de Ordenao: Quick Sort

    15/29

    Kcabvlx`b~jJ~xvzxzvkhjHkhb~Bvhjekb69;;_lelnlz~Nkvhb~bAkvnlk

    ;:

    ;9 69 >9 89 :9 ?9 19 ;;9 =9 ;99 9 89 :9 ?9 19 ;;9 =9 ;99 9 89 :9 ?9 19 ;;9 =9 ;99 9 89 :9 ?9 19 ;;9 =9 ;99 9 89 :9 ?9 19 =9 ;;9 ;99 9 89 :9 ?9 19 =9 9 89 :9 ?9 19 =9

  • 8/4/2019 If969 - Algoritmos de Ordenao: Quick Sort

    16/29

    Kcabvlx`b~jJ~xvzxzvkhjHkhb~Bvhjekb69;;_lelnlz~Nkvhb~bAkvnlk

    ;?

    ;9 69 >9 89 :9 ?9 19 =9 9 89 :9 ?9 19 =9 9 89 :9 ?9 19 =9 9 89 :9 ?9 19 =9

  • 8/4/2019 If969 - Algoritmos de Ordenao: Quick Sort

    17/29

    Ykv\nlbek`jexbhbKvvkegb

    BYvbnjhl`jexbYKVXLXLBEbvakelwkb~zfkvvkegbKTy%%vPcbnkc`jexj

    Kcabvlx`b~jJ~xvzxzvkhjHkhb~Kcabvlx`bhjBvhjekb7[zlnd^bvx69;;_lelnlz~Nkvhb~bAkvnlk

    ;1

    lexykv-nlbeklexTPk#lexcj#lexvlamx#lexylb,t

    lexyb~Ylb0vlamx4

    qmlcjxvzj,t qmlcjkTcjP3ylb,cj$$4

    qmlcjvlamx509//kTvlamxP5ylb,vlamx4

    locj50vlamx,fvjkd4

    jc~j~qkyk#cj#vlamx,4

    p~qkyk#cj#yb~Ylb,4

    vjxzvecj4

    p

  • 8/4/2019 If969 - Algoritmos de Ordenao: Quick Sort

    18/29

    Kekcl~kehbbY~jzhbNhlab

    Cbbylekvlkexj7 yb~~jcjezenlkvz`cbbylekvlkexjjexvjk~

    clemk~>j?hby~jzhbnhlab

    Yvbyvljhkhj~7 ^jydl#jexbKTdP} ^jL$;dg-;#jexbKTdP5} ^jd0v#jexbKTdP0}

    Kcabvlx`b~jJ~xvzxzvkhjHkhb~Kcabvlx`bhjBvhjekb7[zlnd^bvx69;;_lelnlz~Nkvhb~bAkvnlk

    ;=

  • 8/4/2019 If969 - Algoritmos de Ordenao: Quick Sort

    19/29

    Kekcl~kehbbY~jzhbNhlab

    Lelnlkclwkb7 Kexj~hkyvl`jlvklxjvkb

    l0y;g0y

    Ebmejemz`e`jvbjexvjyjl#jjexvjl$;jg;

    K~hzk~yvl`jlvk~yvbyvljhkhj~~b~k\~ojlxk~ Kkxvlfzlbekclemk;

    Kxjvnjlvkyvbyvljhkhj~k\~ojlxk+

    Kcabvlx`b~jJ~xvzxzvkhjHkhb~Kcabvlx`bhjBvhjekb7[zlnd^bvx69;;_lelnlz~Nkvhb~bAkvnlk

    ;

  • 8/4/2019 If969 - Algoritmos de Ordenao: Quick Sort

    20/29

    Kekcl~kehbbY~jzhbNhlab

    @kezxjeb J}l~xj`hbl~nk~b~knbe~lhjvkv#hjyjehjehbhb

    xj~xjhkclemk87

    ^jKTgP5} Kelnkkbhbcbbylenvj`jexkvg-k~yvbyvljhkhj~

    nbe\ezk`clhk~,

    Kcabvlx`b~jJ~xvzxzvkhjHkhb~Kcabvlx`bhjBvhjekb7[zlnd^bvx69;;_lelnlz~Nkvhb~bAkvnlk

    69

  • 8/4/2019 If969 - Algoritmos de Ordenao: Quick Sort

    21/29

    Kekcl~kehbbY~jzhbNhlab

    @kezxjeb J}l~xj`hbl~nk~b~knbe~lhjvkv#hjyjehjehbhb

    xj~xjhkclemk87

    ^jKTgP} KTlPjKTgP~byjv`zxkhb~jjexbglenvj`jexkhb K~~l`#nk7KTlP}-yvbyvljhkhj;~k\~ojlxk, KTg;P5}-yvbyvljhkhj6~k\~ojlxk,

    Kcabvlx`b~jJ~xvzxzvkhjHkhb~Kcabvlx`bhjBvhjekb7[zlnd^bvx69;;_lelnlz~Nkvhb~bAkvnlk

    6;

  • 8/4/2019 If969 - Algoritmos de Ordenao: Quick Sort

    22/29

    Kekcl~kehbbY~jzhbNhlab

    Xv`leb7g0v

    Xbhkkjexvkhkebkvvkegbyb~j~jvnck~~lnkhkj`z`hb~xv~nbegzexb~hjelhb~yjcbcbbylekvlkexj

    Z`nbegzexbnb`xbhb~b~jcj`jexb~`jebvj~{zj} Z`nbegzexbnb`xbhb~b~jcj`jexb~`klbvj~{zj} Z`nbegzexbzelxvlbnbexjehj}

    Kcabvlx`b~jJ~xvzxzvkhjHkhb~Kcabvlx`bhjBvhjekb7[zlnd^bvx69;;_lelnlz~Nkvhb~bAkvnlk

    66

  • 8/4/2019 If969 - Algoritmos de Ordenao: Quick Sort

    23/29

    Hj~j`yjembhb[zld~bvx

    Bykv-nlbek`jexbxj`nz~xb-e,

    Ykv-nlbek`jexbebylbvnk~b ^byvbhzwlhb~hbl~~zfyvbfcj`k~7z`nb`e;

    jcj`jexb~jz`nb`wjvbjcj`jexb~%

    Ajvk~jkvjnzv~b7

    B{zj~laelnkX-e,0-e6,

    Kcabvlx`b~jJ~xvzxzvkhjHkhb~Kcabvlx`bhjBvhjekb7[zlnd^bvx69;;_lelnlz~Nkvhb~bAkvnlk

    6>

  • 8/4/2019 If969 - Algoritmos de Ordenao: Quick Sort

    24/29

    Hj~j`yjembhb[zld~bvx

    Ykv-nlbek`jexbhb`jcmbvnk~b7 ^byvbhzwlhb~hbl~~zfyvbfcj`k~eb`klbvj~

    {zje"6

    ^jehbz`e"6jbbzxvbe"6; Ajvk~jkvjnbvvenlk7

    B{zj~laelnkX-e,0B-ecae,Kcabvlx`b~jJ~xvzxzvkhjHkhb~Kcabvlx`bhjBvhjekb7[zlnd^bvx69;;_lelnlz~Nkvhb~bAkvnlk

    68

  • 8/4/2019 If969 - Algoritmos de Ordenao: Quick Sort

    25/29

    Hj~j`yjembhb[zld~bvx

    Ykv-nlbek`jexbfkckenjkhbNk~b`hlb Ebnk~b`hlb#bkcabvlx`b{zlnd~bvx~jkyvb}l`k

    `zlxb`kl~hb`jcmbvnk~bhb{zjhbylbvnk~b+

    ^zybemk{zjbykv-nlbek`jexj~j`yvjyvbhzwkz`khll~byvbybvnlbekchj

  • 8/4/2019 If969 - Algoritmos de Ordenao: Quick Sort

    26/29

    Hj~j`yjembhb[zld~bvx

    Kcabvlx`b~jJ~xvzxzvkhjHkhb~Kcabvlx`bhjBvhjekb7[zlnd^bvx69;;_lelnlz~Nkvhb~bAkvnlk

    6?

  • 8/4/2019 If969 - Algoritmos de Ordenao: Quick Sort

    27/29

    _jv~bKcjkxvlkhb[zlnd~bvx

    Bnk~b`hlb~laelnkz`ykv-nlbek`jexb`hlb

    K~~l`~jakvke-v`b~{zjbykvnlbek`jexb`hlbj~xjgkfkckenjkhb#xk`f`akvke-`b~{zjek

    `hlbbnz~xbhb{zlnd~bvx~jvB-ecae,

    Ykvkxkckcjkxbvlwk~jkj~nbcmkebyl

    Kcabvlx`b~jJ~xvzxzvkhjHkhb~Kcabvlx`bhjBvhjekb7[zlnd^bvx69;;_lelnlz~Nkvhb~bAkvnlk

    61

  • 8/4/2019 If969 - Algoritmos de Ordenao: Quick Sort

    28/29

    [zlnd^bvx

    B{zlnd~bvx`kl~jnljexjhb{zjb`jvaj~bvxek`klbvykvxjhb~nk~b~%

    Ebjexkexb#ykvkz`k~j{enlklejv~k`jexjbvhjekhkb{zlnd~bvxhj`bvk`zlxb`kl~{zjb jvaj~bvx%J~~jbylbvnk~b#ybvxkexb#knb`ycj}lhkhjhb{zlnd~bvxBe,+

    B{zlnd~bvxybyzckvybl~z`k~j{enlklejv~k`jexjbvhjekhkhlsnlchjbnbvvjv%Ybvxkexb#ek`klbvlkhk~jwj~~jvlk`jcmbvz~kvb{zlnd~bvx%

    6=Kcabvlx`b~jJ~xvzxzvkhjHkhb~Kcabvlx`bhjBvhjekb7[zlnd^bvx69;;_lelnlz~Nkvhb~bAkvnlk

  • 8/4/2019 If969 - Algoritmos de Ordenao: Quick Sort

    29/29

    K\lhkhj~nb`ycj`jexkvj~

    L`ycj`jexjb[zlnd~bvxj`Y|xmbe K`fk~k~jv~j~ebv`kcjkcjkxvlk,

    Cjlxzvkhbnkyxzcb1hbNbv`je

    Vj~bckbyvbfcj`khbclvbhbNbv`je 1;ya%;6