SẮP XẾP NỔI BỌT (BUBBLE SORT)

Một phần của tài liệu Giáo trình Cấu trúc dữ liệu và giải thuật Công nghệ thông tin (Trang 40 - 43)

1 .GIỚI THIỆU

3. MỘT SỐ THUẬT TOÁN SẮP XẾP

3.5 SẮP XẾP NỔI BỌT (BUBBLE SORT)

Bubble sort là giải thuật sắp xếp đơn giản nhất. Tư tưởng của giải thuật là so sánh từng cặp và đổi chỗ chúng để thu được trật tự mong muốn, thao tác này được lặp lại cho tới khi khơng cịn cặp nào cần đổi chỗ. Giải thuật này có độ phức tạp cao.

Giải thuật

Xét từ đáy và phần tử nhẹ nổi lên trên. Các bước thực hiện:

Bước 1: Khởi động i = 0

Bước 2: j = N-1 //Duyệt từ cuối dãy về vị trí i

Trong khi j > i thực hiện:

Nếu a[j] < a[j-1]: hoán vị a[j], a[j-1] j = j - 1

36  Bước 3: i = i + 1

Nếu i < N-1: quay trở lại bước 2. Ngược lại: STOP!

Mô phỏng giải thuật

Cho dãy số a : 12 2 4 1 5 8 6 15

Sắp xếp dãy số trên tăng dần với các bước của thuật toán được thể hiện như sau:

Lần lặp 1: i = 0, j=7 12 2 8 5 1 6 4 15 i = 0, j = 4 12 2 8 5 1 4 6 15 i = 0, j = 3 12 2 8 1 5 4 6 15 i = 0, j = 2 12 2 1 8 5 4 6 15 i = 0, j = 1 12 1 2 8 5 4 6 15 1 12 2 8 5 4 6 15 Lần lặp 2: i = 1, j =5 1 12 2 8 5 4 6 15 .......

37

Tương tự sau lần lặp thứ n-1 chúng ta có kết quả:

1 2 4 5 6 8 12 15

Cài đặt

Độ phức tạp

Trường hợp tốt nhất: T(n) = O(n2). Trườn hợp xất nhất: T(n) = O(n2). Trường hợp trung bình: T(n) = O(n2).

38

Phiên bản này cải thiện trường hợp tốt nhất của giải thuật bubble sort từ O(n2) xuống còn O(n). So sánh các giải thuật  Bubble sort: mất 𝑛 2 2 lần so sánh và 𝑛 2

2 hốn vị trong cả hai trường hợp trung bình và trường hợp xấu nhất.

 Selection sort: mất 𝑛

2

2 lần so sánh và n lần hốn vị. Thích hợp cho trường hợp file nhỏ với dữ liệu lớn hơn và khóa nhỏ.

 Insertion sort: mất 𝑛

2

4 lần so sánh và 𝑛

2

8 lần hoán vị trong trường hợp trung bình và gấp đơi trong trường hợp xấu nhất.

 Insertion sort gần như là tuyến tính cho trường hợp dữ liệu đã được sắp xếp.

Một phần của tài liệu Giáo trình Cấu trúc dữ liệu và giải thuật Công nghệ thông tin (Trang 40 - 43)

Tải bản đầy đủ (PDF)

(151 trang)