Bước 2: Xét a[10] có khoá là 9, nhỏ hơn khoá của a[9] nên ta hoán đổi a[10] và a[9] cho nhau. Khoá của a[9] bây giờ là 9 không nhỏ hơn khoá của a[8] nên bỏ qua. Khoá của a[8] là 9 nhỏ hơn khoá của a[7] nên ta hoán đổi a[8] và a[7] cho nhau. Khoá của a[7] bây giờ là 9 nhỏ hơn khoá của a[6] nên ta hoán đổi a[7] và a[6] cho nhau. | Giải thuật Sắp xếp Bước 2 Xét a 10 có khoá là 9 nhỏ hơn khoá của a 9 nên ta hoán đổi a 10 và a 9 cho nhau. Khoá của a 9 bây giờ là 9 không nhỏ hơn khoá của a 8 nên bỏ qua. Khoá của a 8 là 9 nhỏ hơn khoá của a 7 nên ta hoán đổi a 8 và a 7 cho nhau. Khoá của a 7 bây giờ là 9 nhỏ hơn khoá của a 6 nên ta hoán đổi a 7 và a 6 cho nhau. Khoá của a 6 bây giờ là 9 không nhỏ hơn khoá của a 5 nên bỏ qua. Khoá của a 5 bây giờ là 3 không nhỏ hơn khoá của a 4 nên bỏ qua. Khoá của a 4 là 2 nhỏ hơn khoá của a 3 nên ta hoán đổi a 4 và a 3 cho nhau. Khoá của a 3 bây giờ là 2 nhỏ hơn khoá của a 2 nên ta hoán đổi a 3 và a 2 cho nhau. Đến đây kết thúc bước 2 và a 2 có khoá là 2. Tiếp tục quá trình này và sau 9 bước thì kết thúc. Bảng sau ghi lại các giá trị khoá tương ứng với từng bước. Khóa Bước a 1 a 2 a 3 A 4 a 5 a 6 a 7 a 8 a 9 a 10 Ban đầu 5 6 2 2 10 12 9 10 9 3 Bước 1 2 5 6 2 3 10 12 9 10 9 Bước 2 2 5 6 3 9 10 12 9 10 Bước 3 3 5 6 9 9 10 12 10 Bước 4 5 6 9 9 10 10 12 Bước 5 6 9 9 10 10 12 Bước 6 9 9 10 10 12 Bước 7 9 10 10 12 Bước 8 10 10 12 Bước 9 10 12 Kết quả 2 2 3 5 6 9 9 10 10 12 Hình 2-3 Sắp xếp nổi bọt Chương trình PROCEDURE Bubblesort VAR i j integer BEGIN 1 FOR i 1 to n-1 DO 2 FOR j n DOWNTO i 1 DO 3 IF a j .key a j-1 .key THEN 4 Swap a j a j-1 END Đánh giá Phương pháp sắp xếp nổi bọt lấy O n2 để sắp n phần tử. Dòng lệnh 3 lấy một hằng thời gian. Vòng lặp 2 thực hiện n-i bước mỗi bước lấy O 1 nên lấy O n-i thời gian. Như vậy đối với toàn bộ chương trình ta có n-1 T n X n - i j 1 ArA. O n2 . Nguyễn Văn Linh Trang 24 Giải thuật Sắp xếp QUICKSORT Trong phần này chúng ta sẽ nghiên cứu một giải thuật sắp xếp được dùng một cách phổ biến là Quick Sort do . Hoare phát minh vào năm 1960. Quick Sort đã được cải tiến để trở thành phương pháp được chọn trong các ứng dụng sắp xếp thực tế khác nhau. Ý tưởng Chúng ta vẫn xét mảng a các mẩu tin a 1 .a n . Giả sử v là 1 giá trị khóa mà ta gọi là chốt pivot . Ta phân hoạch dãy a 1 .a n thành hai mảng con bên .