Tải bản đầy đủ (.docx) (2 trang)

CẤU TRÚC dữ LIỆU VÀ GIẢI THUẬT

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (41.52 KB, 2 trang )

CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT
Phương pháp chọn trực tiếp và phương pháp chèn trực tiếp
Cho dãy số 18 7 6 9 2 10 13
Trình bày chương trình biến đổi dãy số trên thành dãy số có thứ tự giảm dần theo
hai pp chọn trực tiếp và chèn trực tiếp.
• Chọn trực tiếp
- Chọn số lớn nhất: chọn số lớn nhất từ ni tới n-1
- For (1=1;i<n;i++), for(j=0,j<i;j++)
- If(a[j]<a[i]
- Pos=j;
QUICKSORT
• Sắp xếp dựa trên sự phân hoạch
Ý tưởng: sử dụng kĩ thuật đệ quy.
Dãy 1< x
Dãy 2=x
Dãy 3>x
Dãy 1 và dãy 3 có nhiều hơn 1 phần tử tiếp tục phân loại thành 3 dãy như trên(gọi
đệ quy)
Phần tử x: là một giá trị trung bình của các phần tử trong dãy. Hay chọn ngay x là
phần tử giữa
Left x right
X=a[(left+right)/2]
Left=0; right=n-1
Thuật toán:
B1: Left=0
B2: Right=n-1
B3: Left>= Right
Bước kết thúc
B4: X=a[(left+right)/2]
B5: i=left
B6: Nếu A[i]<x


chỉ cần tăng i lên rồi quay lại B6 xét phần tử kế tiếp
ngược lại: nếu A[i]>x( sai vị trí chuyển sang bước 7)
B7:cho j= right
B8: nếu A [J]>X thì giảm j xuống để xét các phần tử tiêp theo( quay lại bước 8)
Ngược lại: nếu A[j]<X thực hiện b9
B9: so sánh i và j. Nếu i<=j đổi chỗ giữa A[i] và A[j] (quay trở lại b6)
Tăng i, giảm j
Ngược lại thực hiện B10: phân hoạch cho dãy bên trái(left to j) và phân hoạch cho
dãy bên phải(i tới right)
Bước kết thúc.

×