quick sort - ft.unicamp.brmeira/codeanimation/quicksort.pdf · notas de aula - prof luis meira -...

53
Notas de Aula - Prof Luis Meira - Unifesp SJC Quick Sort 2 1 9 8 5 4 2 1 7 6 topo Saturday, July 11, 2009

Upload: others

Post on 26-Jul-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Quick Sort - ft.unicamp.brmeira/codeanimation/Quicksort.pdf · Notas de Aula - Prof Luis Meira - Unifesp SJC Quick Sort 4 7 1 1 6 2 8 9 5 2 topo Saturday, July 11, 2009

Notas de Aula - Prof Luis Meira - Unifesp SJC

Quick Sort

2 1 9 8 5 4 2 1 7 6

topo

Saturday, July 11, 2009

Page 2: Quick Sort - ft.unicamp.brmeira/codeanimation/Quicksort.pdf · Notas de Aula - Prof Luis Meira - Unifesp SJC Quick Sort 4 7 1 1 6 2 8 9 5 2 topo Saturday, July 11, 2009

Notas de Aula - Prof Luis Meira - Unifesp SJC

Quick Sort

QUICKSORT(A, p, r)

1 if p < r

2 then q ← PARTITION(A, p, r)

3 QUICKSORT(A, p, q - 1)

4 QUICKSORT(A, q + 1, r)

Saturday, July 11, 2009

Page 3: Quick Sort - ft.unicamp.brmeira/codeanimation/Quicksort.pdf · Notas de Aula - Prof Luis Meira - Unifesp SJC Quick Sort 4 7 1 1 6 2 8 9 5 2 topo Saturday, July 11, 2009

Notas de Aula - Prof Luis Meira - Unifesp SJC

Quick Sort

PARTITION(A, p, r)

1 pivo ← A[p]

2 topo ← p

3 for i ← p+1 to r

4 do if A[i] < Pivo

5 v[topo] ← v[i]

6 v[i] ← v[topo+1]

7 topo++

8 v[topo] ← pivo

8 return topo

Saturday, July 11, 2009

Page 4: Quick Sort - ft.unicamp.brmeira/codeanimation/Quicksort.pdf · Notas de Aula - Prof Luis Meira - Unifesp SJC Quick Sort 4 7 1 1 6 2 8 9 5 2 topo Saturday, July 11, 2009

Notas de Aula - Prof Luis Meira - Unifesp SJC

2 1 9 8 5 4 2 1 7 6

PARTITION(A, p, r)

1 topo ← p

2 pivo ← A[p]

3 for i ← p+1 to r

4 do if A[i] < Pivo

5 v[topo] ← v[i]

6 v[i] ← v[topo+1]

7 topo++

8 v[topo] ← pivo

8 return topo

Saturday, July 11, 2009

Page 5: Quick Sort - ft.unicamp.brmeira/codeanimation/Quicksort.pdf · Notas de Aula - Prof Luis Meira - Unifesp SJC Quick Sort 4 7 1 1 6 2 8 9 5 2 topo Saturday, July 11, 2009

Notas de Aula - Prof Luis Meira - Unifesp SJC

2 1 9 8 5 4 2 1

Pivo

7 6

PARTITION(A, p, r)

1 topo ← p

2 pivo ← A[p]

3 for i ← p+1 to r

4 do if A[i] < Pivo

5 v[topo] ← v[i]

6 v[i] ← v[topo+1]

7 topo++

8 v[topo] ← pivo

8 return topo

Saturday, July 11, 2009

Page 6: Quick Sort - ft.unicamp.brmeira/codeanimation/Quicksort.pdf · Notas de Aula - Prof Luis Meira - Unifesp SJC Quick Sort 4 7 1 1 6 2 8 9 5 2 topo Saturday, July 11, 2009

Notas de Aula - Prof Luis Meira - Unifesp SJC

2 1 9 8 5 4 2 1

Pivo

7 6

PARTITION(A, p, r)

1 topo ← p

2 pivo ← A[p]

3 for i ← p+1 to r

4 do if A[i] < Pivo

5 v[topo] ← v[i]

6 v[i] ← v[topo+1]

7 topo++

8 v[topo] ← pivo

8 return topo

Saturday, July 11, 2009

Page 7: Quick Sort - ft.unicamp.brmeira/codeanimation/Quicksort.pdf · Notas de Aula - Prof Luis Meira - Unifesp SJC Quick Sort 4 7 1 1 6 2 8 9 5 2 topo Saturday, July 11, 2009

Notas de Aula - Prof Luis Meira - Unifesp SJC

2 1 9 8 5 4 2 1

Pivo

7 6 to

po

PARTITION(A, p, r)

1 topo ← p

2 pivo ← A[p]

3 for i ← p+1 to r

4 do if A[i] < Pivo

5 v[topo] ← v[i]

6 v[i] ← v[topo+1]

7 topo++

8 v[topo] ← pivo

8 return topo

Saturday, July 11, 2009

Page 8: Quick Sort - ft.unicamp.brmeira/codeanimation/Quicksort.pdf · Notas de Aula - Prof Luis Meira - Unifesp SJC Quick Sort 4 7 1 1 6 2 8 9 5 2 topo Saturday, July 11, 2009

Notas de Aula - Prof Luis Meira - Unifesp SJC

2 1 9 8 5 4 2 1

Pivo

7 6 to

po

PARTITION(A, p, r)

1 topo ← p

2 pivo ← A[p]

3 for i ← p+1 to r

4 do if A[i] < Pivo

5 v[topo] ← v[i]

6 v[i] ← v[topo+1]

7 topo++

8 v[topo] ← pivo

8 return topo

Saturday, July 11, 2009

Page 9: Quick Sort - ft.unicamp.brmeira/codeanimation/Quicksort.pdf · Notas de Aula - Prof Luis Meira - Unifesp SJC Quick Sort 4 7 1 1 6 2 8 9 5 2 topo Saturday, July 11, 2009

Notas de Aula - Prof Luis Meira - Unifesp SJC

2 1 9 8 5

4

2 1

Pivo

7 6 to

po

PARTITION(A, p, r)

1 topo ← p

2 pivo ← A[p]

3 for i ← p+1 to r

4 do if A[i] < Pivo

5 v[topo] ← v[i]

6 v[i] ← v[topo+1]

7 topo++

8 v[topo] ← pivo

8 return topo

Saturday, July 11, 2009

Page 10: Quick Sort - ft.unicamp.brmeira/codeanimation/Quicksort.pdf · Notas de Aula - Prof Luis Meira - Unifesp SJC Quick Sort 4 7 1 1 6 2 8 9 5 2 topo Saturday, July 11, 2009

Notas de Aula - Prof Luis Meira - Unifesp SJC

2 1 9 8 5

4

2 1

Pivo

7 6 to

po

PARTITION(A, p, r)

1 topo ← p

2 pivo ← A[p]

3 for i ← p+1 to r

4 do if A[i] < Pivo

5 v[topo] ← v[i]

6 v[i] ← v[topo+1]

7 topo++

8 v[topo] ← pivo

8 return topo

Saturday, July 11, 2009

Page 11: Quick Sort - ft.unicamp.brmeira/codeanimation/Quicksort.pdf · Notas de Aula - Prof Luis Meira - Unifesp SJC Quick Sort 4 7 1 1 6 2 8 9 5 2 topo Saturday, July 11, 2009

Notas de Aula - Prof Luis Meira - Unifesp SJC

2 1 9 8 5

4

2 1

Pivo

7 6

i

topo

PARTITION(A, p, r)

1 topo ← p

2 pivo ← A[p]

3 for i ← p+1 to r

4 do if A[i] < Pivo

5 v[topo] ← v[i]

6 v[i] ← v[topo+1]

7 topo++

8 v[topo] ← pivo

8 return topo

Saturday, July 11, 2009

Page 12: Quick Sort - ft.unicamp.brmeira/codeanimation/Quicksort.pdf · Notas de Aula - Prof Luis Meira - Unifesp SJC Quick Sort 4 7 1 1 6 2 8 9 5 2 topo Saturday, July 11, 2009

Notas de Aula - Prof Luis Meira - Unifesp SJC

2 1 9 8 5

4

2 1

Pivo

7 6

i

topo

PARTITION(A, p, r)

1 topo ← p

2 pivo ← A[p]

3 for i ← p+1 to r

4 do if A[i] < Pivo

5 v[topo] ← v[i]

6 v[i] ← v[topo+1]

7 topo++

8 v[topo] ← pivo

8 return topo

Saturday, July 11, 2009

Page 13: Quick Sort - ft.unicamp.brmeira/codeanimation/Quicksort.pdf · Notas de Aula - Prof Luis Meira - Unifesp SJC Quick Sort 4 7 1 1 6 2 8 9 5 2 topo Saturday, July 11, 2009

Notas de Aula - Prof Luis Meira - Unifesp SJC

2 1 9 8 5

4

2 1

Pivo

7 6

i

topo

PARTITION(A, p, r)

1 topo ← p

2 pivo ← A[p]

3 for i ← p+1 to r

4 do if A[i] < Pivo

5 v[topo] ← v[i]

6 v[i] ← v[topo+1]

7 topo++

8 v[topo] ← pivo

8 return topo

Saturday, July 11, 2009

Page 14: Quick Sort - ft.unicamp.brmeira/codeanimation/Quicksort.pdf · Notas de Aula - Prof Luis Meira - Unifesp SJC Quick Sort 4 7 1 1 6 2 8 9 5 2 topo Saturday, July 11, 2009

Notas de Aula - Prof Luis Meira - Unifesp SJC

2 1 9 8 5

4

2 1

Pivo

7 6

i

topo

PARTITION(A, p, r)

1 topo ← p

2 pivo ← A[p]

3 for i ← p+1 to r

4 do if A[i] < Pivo

5 v[topo] ← v[i]

6 v[i] ← v[topo+1]

7 topo++

8 v[topo] ← pivo

8 return topo

Saturday, July 11, 2009

Page 15: Quick Sort - ft.unicamp.brmeira/codeanimation/Quicksort.pdf · Notas de Aula - Prof Luis Meira - Unifesp SJC Quick Sort 4 7 1 1 6 2 8 9 5 2 topo Saturday, July 11, 2009

Notas de Aula - Prof Luis Meira - Unifesp SJC

2 1 9 8 5

4

2 1

Pivo

7 6

i

topo

PARTITION(A, p, r)

1 topo ← p

2 pivo ← A[p]

3 for i ← p+1 to r

4 do if A[i] < Pivo

5 v[topo] ← v[i]

6 v[i] ← v[topo+1]

7 topo++

8 v[topo] ← pivo

8 return topo

Saturday, July 11, 2009

Page 16: Quick Sort - ft.unicamp.brmeira/codeanimation/Quicksort.pdf · Notas de Aula - Prof Luis Meira - Unifesp SJC Quick Sort 4 7 1 1 6 2 8 9 5 2 topo Saturday, July 11, 2009

Notas de Aula - Prof Luis Meira - Unifesp SJC

2 1 9 8 5

4

2 1

Pivo

7 6

i

topo

PARTITION(A, p, r)

1 topo ← p

2 pivo ← A[p]

3 for i ← p+1 to r

4 do if A[i] < Pivo

5 v[topo] ← v[i]

6 v[i] ← v[topo+1]

7 topo++

8 v[topo] ← pivo

8 return topo

Saturday, July 11, 2009

Page 17: Quick Sort - ft.unicamp.brmeira/codeanimation/Quicksort.pdf · Notas de Aula - Prof Luis Meira - Unifesp SJC Quick Sort 4 7 1 1 6 2 8 9 5 2 topo Saturday, July 11, 2009

Notas de Aula - Prof Luis Meira - Unifesp SJC

2 1 9 8 5

4

2 1

Pivo

7 6

i

topo

PARTITION(A, p, r)

1 topo ← p

2 pivo ← A[p]

3 for i ← p+1 to r

4 do if A[i] < Pivo

5 v[topo] ← v[i]

6 v[i] ← v[topo+1]

7 topo++

8 v[topo] ← pivo

8 return topo

Saturday, July 11, 2009

Page 18: Quick Sort - ft.unicamp.brmeira/codeanimation/Quicksort.pdf · Notas de Aula - Prof Luis Meira - Unifesp SJC Quick Sort 4 7 1 1 6 2 8 9 5 2 topo Saturday, July 11, 2009

Notas de Aula - Prof Luis Meira - Unifesp SJC

2 1 9 8 5

4

2 1

Pivo

7 6

i

topo

PARTITION(A, p, r)

1 topo ← p

2 pivo ← A[p]

3 for i ← p+1 to r

4 do if A[i] < Pivo

5 v[topo] ← v[i]

6 v[i] ← v[topo+1]

7 topo++

8 v[topo] ← pivo

8 return topo

Saturday, July 11, 2009

Page 19: Quick Sort - ft.unicamp.brmeira/codeanimation/Quicksort.pdf · Notas de Aula - Prof Luis Meira - Unifesp SJC Quick Sort 4 7 1 1 6 2 8 9 5 2 topo Saturday, July 11, 2009

Notas de Aula - Prof Luis Meira - Unifesp SJC

2 1 9 8 5

4

2 1

Pivo

7 6

i

topo

PARTITION(A, p, r)

1 topo ← p

2 pivo ← A[p]

3 for i ← p+1 to r

4 do if A[i] < Pivo

5 v[topo] ← v[i]

6 v[i] ← v[topo+1]

7 topo++

8 v[topo] ← pivo

8 return topo

Saturday, July 11, 2009

Page 20: Quick Sort - ft.unicamp.brmeira/codeanimation/Quicksort.pdf · Notas de Aula - Prof Luis Meira - Unifesp SJC Quick Sort 4 7 1 1 6 2 8 9 5 2 topo Saturday, July 11, 2009

Notas de Aula - Prof Luis Meira - Unifesp SJC

2 1 9 8 5

4

2 1

Pivo

7 6

i

topo

PARTITION(A, p, r)

1 topo ← p

2 pivo ← A[p]

3 for i ← p+1 to r

4 do if A[i] < Pivo

5 v[topo] ← v[i]

6 v[i] ← v[topo+1]

7 topo++

8 v[topo] ← pivo

8 return topo

Saturday, July 11, 2009

Page 21: Quick Sort - ft.unicamp.brmeira/codeanimation/Quicksort.pdf · Notas de Aula - Prof Luis Meira - Unifesp SJC Quick Sort 4 7 1 1 6 2 8 9 5 2 topo Saturday, July 11, 2009

Notas de Aula - Prof Luis Meira - Unifesp SJC

2 1 9 8 5

4

2 1

Pivo

7 6

i

topo

PARTITION(A, p, r)

1 topo ← p

2 pivo ← A[p]

3 for i ← p+1 to r

4 do if A[i] < Pivo

5 v[topo] ← v[i]

6 v[i] ← v[topo+1]

7 topo++

8 v[topo] ← pivo

8 return topo

Saturday, July 11, 2009

Page 22: Quick Sort - ft.unicamp.brmeira/codeanimation/Quicksort.pdf · Notas de Aula - Prof Luis Meira - Unifesp SJC Quick Sort 4 7 1 1 6 2 8 9 5 2 topo Saturday, July 11, 2009

Notas de Aula - Prof Luis Meira - Unifesp SJC

2 1 9 8 5

4

2 1

Pivo

7 6

i

topo

PARTITION(A, p, r)

1 topo ← p

2 pivo ← A[p]

3 for i ← p+1 to r

4 do if A[i] < Pivo

5 v[topo] ← v[i]

6 v[i] ← v[topo+1]

7 topo++

8 v[topo] ← pivo

8 return topo

Saturday, July 11, 2009

Page 23: Quick Sort - ft.unicamp.brmeira/codeanimation/Quicksort.pdf · Notas de Aula - Prof Luis Meira - Unifesp SJC Quick Sort 4 7 1 1 6 2 8 9 5 2 topo Saturday, July 11, 2009

Notas de Aula - Prof Luis Meira - Unifesp SJC

2 1 9 8 5

4

2 1

Pivo

7 6

i

topo

PARTITION(A, p, r)

1 topo ← p

2 pivo ← A[p]

3 for i ← p+1 to r

4 do if A[i] < Pivo

5 v[topo] ← v[i]

6 v[i] ← v[topo+1]

7 topo++

8 v[topo] ← pivo

8 return topo

Saturday, July 11, 2009

Page 24: Quick Sort - ft.unicamp.brmeira/codeanimation/Quicksort.pdf · Notas de Aula - Prof Luis Meira - Unifesp SJC Quick Sort 4 7 1 1 6 2 8 9 5 2 topo Saturday, July 11, 2009

Notas de Aula - Prof Luis Meira - Unifesp SJC

2 1 9 8 5

4

2 1

Pivo

7 6

i

topo

PARTITION(A, p, r)

1 topo ← p

2 pivo ← A[p]

3 for i ← p+1 to r

4 do if A[i] < Pivo

5 v[topo] ← v[i]

6 v[i] ← v[topo+1]

7 topo++

8 v[topo] ← pivo

8 return topo

Saturday, July 11, 2009

Page 25: Quick Sort - ft.unicamp.brmeira/codeanimation/Quicksort.pdf · Notas de Aula - Prof Luis Meira - Unifesp SJC Quick Sort 4 7 1 1 6 2 8 9 5 2 topo Saturday, July 11, 2009

Notas de Aula - Prof Luis Meira - Unifesp SJC

2 1 9 8 5

4

2 1

Pivo

7 6

i

topo

PARTITION(A, p, r)

1 topo ← p

2 pivo ← A[p]

3 for i ← p+1 to r

4 do if A[i] < Pivo

5 v[topo] ← v[i]

6 v[i] ← v[topo+1]

7 topo++

8 v[topo] ← pivo

8 return topo

Saturday, July 11, 2009

Page 26: Quick Sort - ft.unicamp.brmeira/codeanimation/Quicksort.pdf · Notas de Aula - Prof Luis Meira - Unifesp SJC Quick Sort 4 7 1 1 6 2 8 9 5 2 topo Saturday, July 11, 2009

Notas de Aula - Prof Luis Meira - Unifesp SJC

2 1 9 8 5

4

2 1

Pivo

7 6

i

topo

PARTITION(A, p, r)

1 topo ← p

2 pivo ← A[p]

3 for i ← p+1 to r

4 do if A[i] < Pivo

5 v[topo] ← v[i]

6 v[i] ← v[topo+1]

7 topo++

8 v[topo] ← pivo

8 return topo

Saturday, July 11, 2009

Page 27: Quick Sort - ft.unicamp.brmeira/codeanimation/Quicksort.pdf · Notas de Aula - Prof Luis Meira - Unifesp SJC Quick Sort 4 7 1 1 6 2 8 9 5 2 topo Saturday, July 11, 2009

Notas de Aula - Prof Luis Meira - Unifesp SJC

2 1 9 8 5

4

2 1

Pivo

7 6

i

topo

PARTITION(A, p, r)

1 topo ← p

2 pivo ← A[p]

3 for i ← p+1 to r

4 do if A[i] < Pivo

5 v[topo] ← v[i]

6 v[i] ← v[topo+1]

7 topo++

8 v[topo] ← pivo

8 return topo

Saturday, July 11, 2009

Page 28: Quick Sort - ft.unicamp.brmeira/codeanimation/Quicksort.pdf · Notas de Aula - Prof Luis Meira - Unifesp SJC Quick Sort 4 7 1 1 6 2 8 9 5 2 topo Saturday, July 11, 2009

Notas de Aula - Prof Luis Meira - Unifesp SJC

2 1 9 8 5

4

2 1

Pivo

7 6

i

topo

PARTITION(A, p, r)

1 topo ← p

2 pivo ← A[p]

3 for i ← p+1 to r

4 do if A[i] < Pivo

5 v[topo] ← v[i]

6 v[i] ← v[topo+1]

7 topo++

8 v[topo] ← pivo

8 return topo

Saturday, July 11, 2009

Page 29: Quick Sort - ft.unicamp.brmeira/codeanimation/Quicksort.pdf · Notas de Aula - Prof Luis Meira - Unifesp SJC Quick Sort 4 7 1 1 6 2 8 9 5 2 topo Saturday, July 11, 2009

Notas de Aula - Prof Luis Meira - Unifesp SJC

2 1 9 8 5

4

2 1

Pivo

7 6

i

topo

PARTITION(A, p, r)

1 topo ← p

2 pivo ← A[p]

3 for i ← p+1 to r

4 do if A[i] < Pivo

5 v[topo] ← v[i]

6 v[i] ← v[topo+1]

7 topo++

8 v[topo] ← pivo

8 return topo

Saturday, July 11, 2009

Page 30: Quick Sort - ft.unicamp.brmeira/codeanimation/Quicksort.pdf · Notas de Aula - Prof Luis Meira - Unifesp SJC Quick Sort 4 7 1 1 6 2 8 9 5 2 topo Saturday, July 11, 2009

Notas de Aula - Prof Luis Meira - Unifesp SJC

2 1 9 8 5

4

2 1

Pivo

7 6

i

topo

PARTITION(A, p, r)

1 topo ← p

2 pivo ← A[p]

3 for i ← p+1 to r

4 do if A[i] < Pivo

5 v[topo] ← v[i]

6 v[i] ← v[topo+1]

7 topo++

8 v[topo] ← pivo

8 return topo

Saturday, July 11, 2009

Page 31: Quick Sort - ft.unicamp.brmeira/codeanimation/Quicksort.pdf · Notas de Aula - Prof Luis Meira - Unifesp SJC Quick Sort 4 7 1 1 6 2 8 9 5 2 topo Saturday, July 11, 2009

Notas de Aula - Prof Luis Meira - Unifesp SJC

2 1 9 8 5

4

2 1

Pivo

7 6

i

topo

PARTITION(A, p, r)

1 topo ← p

2 pivo ← A[p]

3 for i ← p+1 to r

4 do if A[i] < Pivo

5 v[topo] ← v[i]

6 v[i] ← v[topo+1]

7 topo++

8 v[topo] ← pivo

8 return topo

Saturday, July 11, 2009

Page 32: Quick Sort - ft.unicamp.brmeira/codeanimation/Quicksort.pdf · Notas de Aula - Prof Luis Meira - Unifesp SJC Quick Sort 4 7 1 1 6 2 8 9 5 2 topo Saturday, July 11, 2009

Notas de Aula - Prof Luis Meira - Unifesp SJC

2 1 9 8 5

4

2 1

Pivo

7 6

i

topo

PARTITION(A, p, r)

1 topo ← p

2 pivo ← A[p]

3 for i ← p+1 to r

4 do if A[i] < Pivo

5 v[topo] ← v[i]

6 v[i] ← v[topo+1]

7 topo++

8 v[topo] ← pivo

8 return topo

Saturday, July 11, 2009

Page 33: Quick Sort - ft.unicamp.brmeira/codeanimation/Quicksort.pdf · Notas de Aula - Prof Luis Meira - Unifesp SJC Quick Sort 4 7 1 1 6 2 8 9 5 2 topo Saturday, July 11, 2009

Notas de Aula - Prof Luis Meira - Unifesp SJC

2 1 9 8 5

4

2 1

Pivo

7 6

i

topo

PARTITION(A, p, r)

1 topo ← p

2 pivo ← A[p]

3 for i ← p+1 to r

4 do if A[i] < Pivo

5 v[topo] ← v[i]

6 v[i] ← v[topo+1]

7 topo++

8 v[topo] ← pivo

8 return topo

Saturday, July 11, 2009

Page 34: Quick Sort - ft.unicamp.brmeira/codeanimation/Quicksort.pdf · Notas de Aula - Prof Luis Meira - Unifesp SJC Quick Sort 4 7 1 1 6 2 8 9 5 2 topo Saturday, July 11, 2009

Notas de Aula - Prof Luis Meira - Unifesp SJC

2 1 9 8 5

4

2 1

Pivo

7 6

i

topo

PARTITION(A, p, r)

1 topo ← p

2 pivo ← A[p]

3 for i ← p+1 to r

4 do if A[i] < Pivo

5 v[topo] ← v[i]

6 v[i] ← v[topo+1]

7 topo++

8 v[topo] ← pivo

8 return topo

Saturday, July 11, 2009

Page 35: Quick Sort - ft.unicamp.brmeira/codeanimation/Quicksort.pdf · Notas de Aula - Prof Luis Meira - Unifesp SJC Quick Sort 4 7 1 1 6 2 8 9 5 2 topo Saturday, July 11, 2009

Notas de Aula - Prof Luis Meira - Unifesp SJC

2 1 9 8 5

4

2 1

Pivo

7 6

i

topo

PARTITION(A, p, r)

1 topo ← p

2 pivo ← A[p]

3 for i ← p+1 to r

4 do if A[i] < Pivo

5 v[topo] ← v[i]

6 v[i] ← v[topo+1]

7 topo++

8 v[topo] ← pivo

8 return topo

Saturday, July 11, 2009

Page 36: Quick Sort - ft.unicamp.brmeira/codeanimation/Quicksort.pdf · Notas de Aula - Prof Luis Meira - Unifesp SJC Quick Sort 4 7 1 1 6 2 8 9 5 2 topo Saturday, July 11, 2009

Notas de Aula - Prof Luis Meira - Unifesp SJC

2 1 9 8 5

4

2 1

Pivo

7 6

i

topo

PARTITION(A, p, r)

1 topo ← p

2 pivo ← A[p]

3 for i ← p+1 to r

4 do if A[i] < Pivo

5 v[topo] ← v[i]

6 v[i] ← v[topo+1]

7 topo++

8 v[topo] ← pivo

8 return topo

Saturday, July 11, 2009

Page 37: Quick Sort - ft.unicamp.brmeira/codeanimation/Quicksort.pdf · Notas de Aula - Prof Luis Meira - Unifesp SJC Quick Sort 4 7 1 1 6 2 8 9 5 2 topo Saturday, July 11, 2009

Notas de Aula - Prof Luis Meira - Unifesp SJC

2 1 9 8 5

4

2 1

Pivo

7 6

i

topo

PARTITION(A, p, r)

1 topo ← p

2 pivo ← A[p]

3 for i ← p+1 to r

4 do if A[i] < Pivo

5 v[topo] ← v[i]

6 v[i] ← v[topo+1]

7 topo++

8 v[topo] ← pivo

8 return topo

Saturday, July 11, 2009

Page 38: Quick Sort - ft.unicamp.brmeira/codeanimation/Quicksort.pdf · Notas de Aula - Prof Luis Meira - Unifesp SJC Quick Sort 4 7 1 1 6 2 8 9 5 2 topo Saturday, July 11, 2009

Notas de Aula - Prof Luis Meira - Unifesp SJC

2 1 9 8 5

4

2 1

Pivo

7 6

i

topo

PARTITION(A, p, r)

1 topo ← p

2 pivo ← A[p]

3 for i ← p+1 to r

4 do if A[i] < Pivo

5 v[topo] ← v[i]

6 v[i] ← v[topo+1]

7 topo++

8 v[topo] ← pivo

8 return topo

Saturday, July 11, 2009

Page 39: Quick Sort - ft.unicamp.brmeira/codeanimation/Quicksort.pdf · Notas de Aula - Prof Luis Meira - Unifesp SJC Quick Sort 4 7 1 1 6 2 8 9 5 2 topo Saturday, July 11, 2009

Notas de Aula - Prof Luis Meira - Unifesp SJC

2 1 9 8 5

4

2 1

Pivo

7 6

i

topo

PARTITION(A, p, r)

1 topo ← p

2 pivo ← A[p]

3 for i ← p+1 to r

4 do if A[i] < Pivo

5 v[topo] ← v[i]

6 v[i] ← v[topo+1]

7 topo++

8 v[topo] ← pivo

8 return topo

Saturday, July 11, 2009

Page 40: Quick Sort - ft.unicamp.brmeira/codeanimation/Quicksort.pdf · Notas de Aula - Prof Luis Meira - Unifesp SJC Quick Sort 4 7 1 1 6 2 8 9 5 2 topo Saturday, July 11, 2009

Notas de Aula - Prof Luis Meira - Unifesp SJC

2 1 9 8 5

4

2 1

Pivo

7 6

i

topo

PARTITION(A, p, r)

1 topo ← p

2 pivo ← A[p]

3 for i ← p+1 to r

4 do if A[i] < Pivo

5 v[topo] ← v[i]

6 v[i] ← v[topo+1]

7 topo++

8 v[topo] ← pivo

8 return topo

Saturday, July 11, 2009

Page 41: Quick Sort - ft.unicamp.brmeira/codeanimation/Quicksort.pdf · Notas de Aula - Prof Luis Meira - Unifesp SJC Quick Sort 4 7 1 1 6 2 8 9 5 2 topo Saturday, July 11, 2009

Notas de Aula - Prof Luis Meira - Unifesp SJC

2 1 9 8 5

4

2 1

Pivo

7 6

i

topo

PARTITION(A, p, r)

1 topo ← p

2 pivo ← A[p]

3 for i ← p+1 to r

4 do if A[i] < Pivo

5 v[topo] ← v[i]

6 v[i] ← v[topo+1]

7 topo++

8 v[topo] ← pivo

8 return topo

Saturday, July 11, 2009

Page 42: Quick Sort - ft.unicamp.brmeira/codeanimation/Quicksort.pdf · Notas de Aula - Prof Luis Meira - Unifesp SJC Quick Sort 4 7 1 1 6 2 8 9 5 2 topo Saturday, July 11, 2009

Notas de Aula - Prof Luis Meira - Unifesp SJC

2 1 9 8 5

4

2 1

Pivo

7 6

i

topo

PARTITION(A, p, r)

1 topo ← p

2 pivo ← A[p]

3 for i ← p+1 to r

4 do if A[i] < Pivo

5 v[topo] ← v[i]

6 v[i] ← v[topo+1]

7 topo++

8 v[topo] ← pivo

8 return topo

Saturday, July 11, 2009

Page 43: Quick Sort - ft.unicamp.brmeira/codeanimation/Quicksort.pdf · Notas de Aula - Prof Luis Meira - Unifesp SJC Quick Sort 4 7 1 1 6 2 8 9 5 2 topo Saturday, July 11, 2009

Notas de Aula - Prof Luis Meira - Unifesp SJC

2 1 9 8 5

4

2 1

Pivo

7 6

i

topo

PARTITION(A, p, r)

1 topo ← p

2 pivo ← A[p]

3 for i ← p+1 to r

4 do if A[i] < Pivo

5 v[topo] ← v[i]

6 v[i] ← v[topo+1]

7 topo++

8 v[topo] ← pivo

8 return topo

Saturday, July 11, 2009

Page 44: Quick Sort - ft.unicamp.brmeira/codeanimation/Quicksort.pdf · Notas de Aula - Prof Luis Meira - Unifesp SJC Quick Sort 4 7 1 1 6 2 8 9 5 2 topo Saturday, July 11, 2009

Notas de Aula - Prof Luis Meira - Unifesp SJC

2 1 9 8 5

4

2 1

Pivo

7 6

i

topo

PARTITION(A, p, r)

1 topo ← p

2 pivo ← A[p]

3 for i ← p+1 to r

4 do if A[i] < Pivo

5 v[topo] ← v[i]

6 v[i] ← v[topo+1]

7 topo++

8 v[topo] ← pivo

8 return topo

Saturday, July 11, 2009

Page 45: Quick Sort - ft.unicamp.brmeira/codeanimation/Quicksort.pdf · Notas de Aula - Prof Luis Meira - Unifesp SJC Quick Sort 4 7 1 1 6 2 8 9 5 2 topo Saturday, July 11, 2009

Notas de Aula - Prof Luis Meira - Unifesp SJC

2 1 9 8 5

4

2 1

Pivo

7 6

i

topo

PARTITION(A, p, r)

1 topo ← p

2 pivo ← A[p]

3 for i ← p+1 to r

4 do if A[i] < Pivo

5 v[topo] ← v[i]

6 v[i] ← v[topo+1]

7 topo++

8 v[topo] ← pivo

8 return topo

Saturday, July 11, 2009

Page 46: Quick Sort - ft.unicamp.brmeira/codeanimation/Quicksort.pdf · Notas de Aula - Prof Luis Meira - Unifesp SJC Quick Sort 4 7 1 1 6 2 8 9 5 2 topo Saturday, July 11, 2009

Notas de Aula - Prof Luis Meira - Unifesp SJC

2 1 9 8 5

4

2 1

Pivo

7 6

i

topo

PARTITION(A, p, r)

1 topo ← p

2 pivo ← A[p]

3 for i ← p+1 to r

4 do if A[i] < Pivo

5 v[topo] ← v[i]

6 v[i] ← v[topo+1]

7 topo++

8 v[topo] ← pivo

8 return topo

Saturday, July 11, 2009

Page 47: Quick Sort - ft.unicamp.brmeira/codeanimation/Quicksort.pdf · Notas de Aula - Prof Luis Meira - Unifesp SJC Quick Sort 4 7 1 1 6 2 8 9 5 2 topo Saturday, July 11, 2009

Notas de Aula - Prof Luis Meira - Unifesp SJC

2 1 9 8 5

4

2 1

Pivo

7 6

i

topo

PARTITION(A, p, r)

1 topo ← p

2 pivo ← A[p]

3 for i ← p+1 to r

4 do if A[i] < Pivo

5 v[topo] ← v[i]

6 v[i] ← v[topo+1]

7 topo++

8 v[topo] ← pivo

8 return topo

Saturday, July 11, 2009

Page 48: Quick Sort - ft.unicamp.brmeira/codeanimation/Quicksort.pdf · Notas de Aula - Prof Luis Meira - Unifesp SJC Quick Sort 4 7 1 1 6 2 8 9 5 2 topo Saturday, July 11, 2009

Notas de Aula - Prof Luis Meira - Unifesp SJC

2 1 9 8 5

4

2 1

Pivo

7 6

i

topo

PARTITION(A, p, r)

1 topo ← p

2 pivo ← A[p]

3 for i ← p+1 to r

4 do if A[i] < Pivo

5 v[topo] ← v[i]

6 v[i] ← v[topo+1]

7 topo++

8 v[topo] ← pivo

8 return topo

Saturday, July 11, 2009

Page 49: Quick Sort - ft.unicamp.brmeira/codeanimation/Quicksort.pdf · Notas de Aula - Prof Luis Meira - Unifesp SJC Quick Sort 4 7 1 1 6 2 8 9 5 2 topo Saturday, July 11, 2009

Notas de Aula - Prof Luis Meira - Unifesp SJC

2 1 9 8 5

4

2 1

Pivo

7 6

i

topo

PARTITION(A, p, r)

1 topo ← p

2 pivo ← A[p]

3 for i ← p+1 to r

4 do if A[i] < Pivo

5 v[topo] ← v[i]

6 v[i] ← v[topo+1]

7 topo++

8 v[topo] ← pivo

8 return topo

Saturday, July 11, 2009

Page 50: Quick Sort - ft.unicamp.brmeira/codeanimation/Quicksort.pdf · Notas de Aula - Prof Luis Meira - Unifesp SJC Quick Sort 4 7 1 1 6 2 8 9 5 2 topo Saturday, July 11, 2009

Notas de Aula - Prof Luis Meira - Unifesp SJC

2 1 9 8 5

4

2 1

Pivo

7 6

i

topo

PARTITION(A, p, r)

1 topo ← p

2 pivo ← A[p]

3 for i ← p+1 to r

4 do if A[i] < Pivo

5 v[topo] ← v[i]

6 v[i] ← v[topo+1]

7 topo++

8 v[topo] ← pivo

8 return topo

Saturday, July 11, 2009

Page 51: Quick Sort - ft.unicamp.brmeira/codeanimation/Quicksort.pdf · Notas de Aula - Prof Luis Meira - Unifesp SJC Quick Sort 4 7 1 1 6 2 8 9 5 2 topo Saturday, July 11, 2009

Notas de Aula - Prof Luis Meira - Unifesp SJC

2 1 9 8 5 4 2 1

Pivo

7 6

i

topo

PARTITION(A, p, r)

1 topo ← p

2 pivo ← A[p]

3 for i ← p+1 to r

4 do if A[i] < Pivo

5 v[topo] ← v[i]

6 v[i] ← v[topo+1]

7 topo++

8 v[topo] ← pivo

8 return topo

Saturday, July 11, 2009

Page 52: Quick Sort - ft.unicamp.brmeira/codeanimation/Quicksort.pdf · Notas de Aula - Prof Luis Meira - Unifesp SJC Quick Sort 4 7 1 1 6 2 8 9 5 2 topo Saturday, July 11, 2009

Notas de Aula - Prof Luis Meira - Unifesp SJC

2 1 9 8 5 4 2 1

Pivo

7 6

i

topo

PARTITION(A, p, r)

1 topo ← p

2 pivo ← A[p]

3 for i ← p+1 to r

4 do if A[i] < Pivo

5 v[topo] ← v[i]

6 v[i] ← v[topo+1]

7 topo++

8 v[topo] ← pivo

8 return topo

Saturday, July 11, 2009

Page 53: Quick Sort - ft.unicamp.brmeira/codeanimation/Quicksort.pdf · Notas de Aula - Prof Luis Meira - Unifesp SJC Quick Sort 4 7 1 1 6 2 8 9 5 2 topo Saturday, July 11, 2009

Notas de Aula - Prof Luis Meira - Unifesp SJC

• Algoritmo QuickSort: Introduction to Algorithms (Second Edition) by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Cliff Stein

Saturday, July 11, 2009