You are on page 1of 4

40 70 20 60 90 10 50 30

Chọn x =a [(left + right)/2] = a[3] = 60

i = left = 0, j = right = 7

a[i]=a[0] = 40 < x, i++ -> i=1

a[i] = a[1] = 70 > x -> i giữ nguyên

a[j] = a[7] = 30 < x -> giữ nguyên

hoán vị a[i] =70 và a[j] =30

40 30 20 60 90 10 50 70
Tăng i lên 1 giá trị, giảm j 1 giá trị

a[i] = a[ 2] =20 < x, i++ -> i=3

a[i] = a[3] =60 =x, dừng i

a[j] = a[6] = 50 < x , dừng j

hoán vị a[i] = 60 và a[j]= 50

40 30 20 50 90 10 60 70

Tăng i lên 1 giá trị, giảm j 1 giá trị

a[i] = a[4] = 90 >x, dừng i

a[j] = a[5] = 10 < x, dừng j

hoán vị a[i] và a[j]

40 30 20 50 10 90 60 70

Chia dãy thành 2 đoạn

40 30 20 50 10

90 60 70

Tiếp tục quick sort cho 2 đoạn trên:

Đoạn 1:
40 30 20 50 10
x= a[(left + right)/2] = a[2] =20

i= left =0, j =right = 4

a[i]= a[0] = 40 > x -> dừng i

a[j] = a[4] = 10 < x -> dừng j

hoán vị a[i] và a[j]

10 30 20 50 40

Tăng I 1 giá trị, giảm j 1 giá trị

a[i] = a[1] = 30 > x -> dừng i

a[j] = a[3] = 50 > x, j—

a[j] = a[2] =20 = x, dừng j

hoán vị a[i] và a[j]

10 20 30 50 40

Chia thành 2 đoạn:

10 20

30 50 40
Tiếp tục quick sort cho 2 đoạn trên

ở đoạn 1, a[x] =10, a[i] =a [0] =10 = x và a[j] =a[1] = 20 > x -> dừng quick sort

ở đoạn 2:

x=a[1] = 50

i=0, j=2

a[i]= a[0] = 30 < x, i++

a[i] =a[1] =50 =x ,dừng i

a[j] = a[2] = 40 < x, dừng j

hoán vị a[i] và a[j]

30 40 50
Chia được thành 2 đoạn

30 40
50
Tiếp tục quick sort đoạn 1 : x= a[0]=30, a[i] =a [0] =30 = x và a[j] =a[1] = 40 > x -> dừng quick sort

Ta thu được kết quả:

10 20 30 40 50

Đoạn 2:

90 60 70
x=a[1] = 60, i=0 , j=2

a[i] = 90 > x, dừng i

a[j] = 70 > x , j—

a[j] = 60 = x, dừng j

hoán vị a[i] và a[j]:

60 90 70

Chia thành 2 đoạn

60

90 70

Quick sort cho đoạn 2

X= a[0] = 90, i=0, j=1

a[i] = 90 = x -> dừng i

a[j] = 70 < x -> dừng j

hoán vị a[i] và a[j]

70 90

ở đoạn 2 thu được

60 70 90

Sau khi quick sort hoàn chỉnh, ta thu được dãy:

10 20 30 40 50 60 70 90
 Độ phức tạp của bài toán này là: 8 log 8

You might also like