quick sort - ft.unicamp.brmeira/codeanimation/quicksort.pdf · notas de aula - prof luis meira -...
TRANSCRIPT
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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