You are on page 1of 34

Exchange Sort

Ý tưởng
• Sắp xếp đổi chỗ trực tiếp hoạt động bằng cách so sánh phần tử
đầu tiên với tất cả các phần tử ở trên nó, hoán đổi vị trí cần
thiết, do đó đảm bảo rằng phần tử đầu tiên đúng với thứ tự sắp
xếp cuối cùng; sau đó nó sẽ tiến hành tương tự cho phần tử
thứ hai, v.v
Ví dụ
Ví dụ
Ví dụ
Ví dụ
Thuật toán
Đánh giá
Heap Sort
Cấu trúc heap (đống)
• Là một cây nhị phân đầy đủ và
tại mỗi nút ta luôn có giá trị
của nút con không lớn hơn nút
cha của nó, tức là key(child) ≤
key(parent) gọi là Max-Heap.
Trường hợp ngược lại gọi là
Min-Heap.
Thuật toán xây dựng heap
•Nếu đỉnh cha có chỉ số là i thì con trái có chỉ số là: Left = i * 2 + 1
•Con phải có chỉ số là: Right = i*2 +2
•Trong đó Left và Right phải nhỏ hơn n (số phần tử của mảng)
•Việc cần làm là tìm ra đỉnh lớn nhất trong 3 đỉnh (i, Left, Right) để cho
đỉnh ấy làm cha cho phù hợp với cấu trúc heap.
•Nếu đỉnh lớn nhất khác đỉnh ban đầu, ta tiến hành đổi chỗ. Đệ quy vun
đống tại vị trí vừa đổi chỗ để vun các nút tiếp theo.
Biểu diễn heap bằng mảng
Thuật toán sắp xếp vun đống
• Vun đống từ dưới lên, tức là vun từ đỉnh cha cuối cùng của
heap. Một mảng n phần tử sẽ có n/2 nút cha.
• Đổi chỗ đỉnh gốc đống với phần tử cuối cùng của mảng. Như
vậy phần tử lớn nhất sẽ nằm ở cuối mảng.
• Giảm số lượng phần tử đi 1 ( n = n -1), vì phần tử cuối cùng đã
đúng vị trí.
• Lặp lại việc vun đống cho các phần tử còn lại và lấy phần tử
cho tới khi còn 1 phần tử thì dừng.
• Một mảng n phần tử sẽ phải thực hiện vun đống n lần.
Thuật toán sắp xếp vun đống
Thuật toán sắp xếp vun đống (1)
Thuật toán sắp xếp vun đống (2)
Thuật toán sắp xếp vun đống (3)
Thuật toán sắp xếp vun đống (4)
Thuật toán sắp xếp vun đống (5)
Thuật toán sắp xếp vun đống (6)
Thuật toán sắp xếp vun đống (7)
Thuật toán sắp xếp vun đống (8)
Thuật toán sắp xếp vun đống (9)
Thuật toán sắp xếp vun đống (10)
Thuật toán sắp xếp vun đống (11)
Thuật toán sắp xếp vun đống (12)
Thuật toán sắp xếp vun đống (13)
Thuật toán sắp xếp vun đống (14)
Thuật toán sắp xếp vun đống (15)
Thuật toán sắp xếp vun đống (16)
Thuật toán sắp xếp vun đống (17)
Đánh giá độ phức tạp

You might also like