# Ordenação por Troca e Partição: QuickSort

26

## Full text

(1)
(2)
(3)

### .

. / (

0

(

/ 0

. ( 1 (

(4)

3 + 4 , 5"+ 5& 5

-5& / 6 ! " / #

5" / 6 / / \$% \$

&'!"& # 7 , 6 ( 5&

5 / 6 / / "& \$

4

5- / 6 / / "& \$

# 7 , 6 ( 5&

(5)

-* , 5" 5

-, 8 /

"& "

9 , + )

, .

9 /: ;

(6)

* /: < , 5"

5-= , . / /

) /: /

)8 )

> ( 6

6

> ( 6

5 / / / +

1 ( /: ( + = +

(7)

" 7 /: / 0

& 1 .

/?"@+ /?&@+ /? @A / + /

/ 9 /? @ BC / BA B D"

+ ) + /? ("@+/? (&@+

/? @CB / 9 /? @ A / BA B E "

9 /? @A / /? @CB / + ( /? @ /? @+

B D" B ("

- + < F

+ ) / / ) + / /

/? @ 0

G * < , /

(8)

5 ) , /

/ ?#+ &H+ "%+ "I+ H+ J+ "H+ -@

(9)

/ / /

? @

/ ? @

* / 1 .

% " & - G H \$ J

# &H "% "I H J "H - # " J &H - &HA# -CB#

"

+ , - + ,

.

# - "% "I H J "H &H # & \$ "% "H "%A# "HCB#

# - "% "I H J "H &H # & \$ "% "H "%A# "HCB#

.

# - "% "I H J "H &H # & H "% J "%A# JCB#

"

+ , - + ,

.

# - J "I H "% "H &H # - G "I H "IA# HCB#

"

(10)

5 ) , /

/ ?#+ &H+ "%+ "I+ H+ J+ "H+ -@

/ / /

? @

/ ? @

* / 1 .

% " & - G H \$ J

# - J H "I "% "H &H # G - "I H <

"

10

- + ,

H - J # "I "% "H &H

5" 5& 5

-% " &

H - J

-#

G H \$ J

"I "% "H &H

5"+ 5& 5- ,

(11)

5" / /

? @

/ ? @

* / 1 .

% " &

H - J H " & - J -AH JCBH

.

H - J H & " J - <

" "

- + ,

(12)

5- / /

? @

/ ? @

* / 1 .

G H \$ J

"I "% "H &H "I H J "% &H "%A"I &HCB"I

.

"I "% "H &H "I \$ \$ "H "H "HA"I "H CB"I

.

12

.

"I "% "H &H "I J \$ &H "H <

"

- + ,

"H "% "I &H 5H 5\$ L

5G 5H 5\$

(13)

5 ) , /

/ ?#+ &H+ "%+ "I+ H+ J+ "H+ -@

5G / /

? @

/ ? @

* / 1 .

G H

"H "% "H H H "% "% "%A"H "%CB"H

. .

"H "% "H \$ H M "% <

"

- + ,

"% "H 5G 6 L

(14)
(15)

5 ) ,

(16)

/ / /

? @

/ ? @

* / 1 .

% " & - G H \$ J

&H GI #& -J "& HJ I\$ -- &H " J GI -- GIA&H --CB&H

.

&H GI #& -J "& HJ I\$ -- &H " \$ GI I\$ GIA&H --CB&H

.

&H GI #& -J "& HJ I\$ -- &H " H GI HJ GIA&H HJCB&H

16

&H GI #& -J "& HJ I\$ -- &H " H GI HJ GIA&H HJCB&H

.

&H "& #& -J GI HJ I\$ -- &H " G GI "& GIA&H "&CB&H

"

+ , - + ,

.

&H "& #& -J GI HJ I\$ -- &H & - #& -J #&A&H -JCB&H

(17)

/ / /

? @

/ ? @

* / 1 .

% " & - G H \$ J

&H "& #& -J GI HJ I\$ -- &H & & #& #& #&A&H #&CB&H

.

&H "& #& -J GI HJ I\$ -- &H & " #& GI <

" "

- + ,

"& &H #& -J GI HJ I\$

--5" 5& 5

-% "&

" &H

& - G H \$ J

#& -J GI HJ I\$

--5"+ 5& 5- ,

K "

(18)

5- / /

? @

/ ? @

* / 1 .

& - G H \$ J

#& -J GI HJ I\$ -- #& - J -J -- -JA#& --CB#&

.

#& -J GI HJ I\$ -- #& G J GI -- GIA#& --CB#&

.

18

#& -J GI HJ I\$ -- #& H J GI -- HJA#& --CB#&

.

#& -J GI HJ I\$ -- #& \$ J I\$ -- I\$A#& --CB#&

(19)

5- / /

? @

/ ? @

* / 1 .

& - G H \$ J

#& -J GI HJ I\$ -- #& J J -- -- --A#& --CB#&

.

-- -J GI HJ I\$ #& #& I J (((( -- <

"

- + ,

5G 5H

7 5G 6 +

, L

(20)

5G / /

? @

/ ? @

* / 1 .

& - G H \$

-- -J GI HJ I\$ -- - \$ -J I\$ -JA--

I\$CB--.

-- -J GI HJ I\$ -- - H -J HJ -JA--

HJCB--.

20

-- -J GI HJ I\$ -- - G -J GI -JA--

(21)

5G / /

? @

/ ? @

* / 1 .

& - G H \$

-- -J GI HJ I\$ -- - - -J -J -JA--

-JCB--.

-- -J GI HJ I\$ -- - & -J -- <

"

- + ,

+ , //0

5\$ 5J 7 5J 6 +

, L

(22)

5J / /

? @

/ ? @

* / 1 .

- G H \$

-J GI HJ I\$ -J G \$ GI I\$ GIA-J I\$CB-J

.

-J GI HJ I\$ -J G H GI HJ GIA-J HJCB-J

.

22

-J GI HJ I\$ -J G G GI GI GIA-J GICB-J

.

-J GI HJ I\$ -J G - GI -J <

"

- + ,

+ , /10

5I 5#

7 5# 6 +

(23)

5# / /

? @

/ ? @

* / 1 .

G H \$

GI HJ I\$ GI H \$ HJ I\$ HJAGI I\$CBGI

.

GI HJ I\$ GI H H HJ HJ HJAGI HJCBGI

. .

GI HJ I\$ GI H G HJ GI <

"

- + ,

+ , 230

5"% 5""

7 5"" 6 +

(24)

5"" / /

? @

/ ? @

* / 1 .

H \$

HJ I\$ HJ \$ \$ I\$ I\$ I\$AHJ I\$CBHJ

.

HJ I\$ HJ \$ H I\$ HJ <

"

24

"

- + ,

+ , 410

5"& 5"- 5

(25)

void particao(int *item, int esq, int dir){ int pivo, esq_esp, dir_esp;

esq_esp = esq; dir_esp = dir; pivo = item[esq]; while (esq < dir){

while((item[dir] >= pivo) && (esq < dir)) dir--; if(esq != dir){

item[esq] = item[dir]; esq++;

esq++; }

while((item[esq] <= pivo) && (esq < dir))esq++; if(esq != dir){

item[dir] = item[esq]; dir--;

} }

item[esq] = pivo; pivo = esq;

esq = esq_esp; dir = dir_esp;

(26)

void quick(int *item, int count){ particao(item, 0, count-1);

}

Updating...

Updating...