Sắp xếp là quá trình bố trí lại các bản ghi theo một trường go ̣i là khóa.. Sổ danh bạ thường được sắp xếp theo trường khóa là tên cơ quan để dễ tìm kiếm... chứa khóa đang được xét
Trang 1CHƯƠNG 5
SẮP XẾP
Trang 3Bài toán sắp xếp
Có mô ̣t tâ ̣p n đối tượng Mỗi đối tượng có nhiều thuô ̣c tính, được thể hiê ̣n bằng mô ̣t
kiểu bản ghi gồm nhiều trường Sắp xếp là
quá trình bố trí lại các bản ghi theo một
trường go ̣i là khóa.
Ví dụ trong bảng danh bạ gồm các bản ghi
có tên cơ quan, địa chỉ, số điện thoại Sổ
danh bạ thường được sắp xếp theo trường
khóa là tên cơ quan để dễ tìm kiếm.
Trang 4tương tự.
Trang 55.1 Phương pháp chọn
Dãy khóa cần sắp xếp là k[1],k[2],…, k[n] Ở lượt thứ i (i=1,2,3,…,n-2) ta sẽ chọn trong dãy khóa k[i+1],…., k[n] khóa nhỏ nhất và đổi chỗ nó với k[i]
Sau n-1 lượt khóa từ nhỏ đến lớn sẽ được sắp xếp ở các vị trí thứ 1, thứ 2,…thứ n-1, thứ n
Trang 8chứa khóa đang được xét Để khóa mới dù ở
vị trí đầu tiên cũng được chèn vào giữa
khóa nhỏ và lớn hơn nó, ta thêm vào khóa giả k[0]=-∞.
Trang 10thứ tự ta sẽ đổi chỗ chúng với nhau.
Sau mỗi lượt sắp xếp các giá trị khóa nhỏ sẽ nổi dần lên giống như bọt nước trong nồi nước đang sôi.
Trang 13được so sánh với khóa chốt và sẽ đổi vị trí cho nhau.
Trang 145.4 Phương pháp sắp xếp nhanh
Khi việc đổi chỗ đã thực hiện xong, dãy khóa được phân làm 2 đoạn Đoạn đầu gồm các khóa nhỏ hơn chốt, đoạn sau gồm các khóa lớn hơn chốt, khóa chốt nằm giữa 2 đoạn.
Hai đoạn sẽ được xử lý riêng giống như vậy Quá trình xử lý từng đoạn sẽ kết thúc khi chỉ còn 1 phần tử.
Trang 15{int i=L;int j=U+1;int key=k[L];
while(B) {i++;while(k[i]<key) i++;
j ;while(k[j]>key) j ;
if(i<j) swap(&k[i],&k[j]);
else B=0;
}
Trang 175.5 Phương pháp vun đống
Cài đặt:
Trước hết phải tạo đống là tạo ra cây nhị
phân hoàn chỉnh mà khóa ở nút cha bao giờ cũng lớn hơn khóa ở các nút con của nó
Cây nhị phân này được lưu trữ kế tiếp
trong máy.
Trang 19}
Trang 21Bài tâ ̣p
Bài 1.Cho dãy khóa:
50,8,34,6,98,17,83,25,66,42,21,59,62,71,85,76 Viết chương trình sắp xếp dãy khóa trên theo thứ
tự tăng dần, giảm dần bằng phương pháp: