tailieunhanh - Bài giảng Cấu trúc dữ liệu và giải thuật trong C++ - Bài 11: Sắp xếp
Bài giảng "Cấu trúc dữ liệu và giải thuật trong C++ - Bài 11: Sắp xếp" cung cấp cho người học các kiến thức: Các thuật toán sắp xếp nội với thời gian chạy O(n2), sắp xếp nổi bọt, minh họa thuật toán Bubble sort,. . | Bài giảng Cấu trúc dữ liệu và giải thuật trong C++ - Bài 11: Sắp xếp Bài 11: Sắp xếp (Sorting) Sorting 1 Sorting Bài toán Input: Dãy các phần tử (và một thứ tự) (Dãy các phần tử thường được lưu bằng mảng.) Output: Dãy các phần tử được sắp theo thứ tự tăng hoặc giảm dần theo một hoặc một vài thuộc tính của nó (các thuộc tính này gọi là thuộc tính khóa). Thuộc tính khóa được sắp xếp theo một hàm logic, ví dụ (Các thuật toán sắp xếp nội với thời gian chạy O(n2) Nổi bọt – Bubble sort Chèn – Insertion sort Chọn – Selection sort Sorting 3 Sắp xếp nổi bọt – Bubble sort Ý tưởng: Thực hiện chuyển dần các phân tử có giá trị khóa nhỏ về đầu dãy, các phần tử có khóa lớn về cuối dãy. Sorting 4 Sắp xếp nổi bọt – Bubble sort Giải thuật: Đi từ cuối mảng về đầu mảng, trong quá trình đi nếu phần tử ở dưới (sau) nhỏ hơn phần tử đứng ngay trên (trước) nó thì theo nguyên tắc của bọt khí phần tử nhẹ sẽ bị “trồi” lên phía trên phần tử nặng (hai phần tử này sẽ được đổi chỗ cho nhau). Kết quả là phần tử nhỏ nhất (nhẹ nhất) sẽ được đưa lên (trồi lên) trên bề mặt (đầu mảng) rất nhanh. Sau mỗi lần đi chúng ta đưa được một phần tử trồi lên đúng chỗ. Do vậy, sau N–1 lần đi thì tất cả các phần tử trong mảng A sẽ có thứ tự tăng. Sorting 5 Sắp xếp nổi bọt – Bubble sort Ví dụ sắp xếp dãy sau theo thứ tự tăng dần: 5 4 2 3 1 1 2 5 4 3 Bước 1 5 4 2 3 1 Bước 3 1 2 3 5 4 1 5 4 2 3 1 2 3 5 4 1 5 4 2 3 Bước 4 1 2 3 4 5 Bước 2 1 2 5 4 3 Sorting 6 Thuật toán Algorithm BubbleSort(Array A, n) Input: Mảng A có n phần tử Output: Mảng A được sắp theo thứ tự tăng dần của khóa for i 0 to n-2 do for j n-1 downto i+1 do if A[j].Key < A[j-1].Key then swap(A[j-1], A[j]); - Trong đó swap là thủ tục tráo đổi vị trí của hai phần tử void Swap(object &a, object &b){ object tg; tg = a; a = b; b = tg; } Sorting 7 Minh họa thuật toán Bubble sort 0 1 2 3 4 5 6 7 8 9 8 6 34 22 40 5 11 23
đang nạp các trang xem trước