Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 44 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
44
Dung lượng
1,82 MB
Nội dung
Phần Cácthuậttoán xếp Cácthuậttoán xếp Cácthuậttoán xếp xét đến phần dựa hai phép tốn bản, so sánh hai phần tử với đặt lại phần tử danh sách Độ phức tạp thuậttoán xếp dựa phép so sánh hai phần tử xem xét thơng qua số phép so sánh (trong số trường hợp số lần đổi chỗ – đặt lại phần tử quan tâm) Số tối đa phép so sánh cần dùng để xếp danh sách coi trường hợp xấu mà thuậttoán gặp phải Cácthuậttoán xếp/2 of 44 Cácthuậttoán xếp Nếu ta biểu diễn thuậttoán xếp dựa phép so sánh định nhị phân số phép tốn cần thực độ dài đường từ gốc tới Số định nhị phân n! Chiều cao định nhị phân h log 2(n!) Cácthuậttoán xếp/3 of 44 Cácthuậttoán xếp Như số phép so sánh tối thiểu phải thực [log 2(n!)] Nhận xét: Dễ dàng thấy n!4 n!> nn/4 Thật vậy, với n=4 bất đẳng thức hiển nhiên Giả thiết có n! > nn/4 Xét bất đẳng thức (n+1)nn/4>(n+1)(n+1)/4, hay nn/4>(n+1)(n-3)/4, bất đẳng thức lại tương đương với nn >(n+1)n-3, hay (n+1)3 >((n+1)/n)n Điều hiển nhiên (n+1)3>e >((n+1)/n)n, với n>4 Suy ra: khơng có thuật tốn xếp dựa phép so sánh lại có đánh giá tốt O(nlogn) Cácthuậttoán xếp/4 of 44 Selection sort Bài toán: Cho mảng n số nguyên X(1), X(2), , X(n) Hãy xếp lại mảng theo thứ tự không giảm Mục nhằm trình bày thuật tốn xếp đơn giản thơng dụng để giải tốn Thuậttoán gọi thuậttoán chọn hay xếp Cácthuậttoán xếp/5 of 44 Selection sort Mô tả thuật toán: Input: Dãy X(1), X(2), , X(n) số nguyên số phần tử n Output: Dãy X(1), X(2), , X(n) không giảm; Chọn phần tử nhỏ Xmin phần tử X(1), X(2), , X(n) hốn vị (tức Xmin) với phần tử X(1); Chọn phần tử nhỏ Xmin phần lại dãy X(2), X(3), , X(n) hốn vị (tức Xmin) với phần tử thứ hai X(2); Tiếp tục thủ tục để chọn phần tử X(3), X(4), , X(n-1) thích hợp cho dãy Cácthuậttoán xếp/6 of 44 Selection sort Chi tiết: Với i = đến n –1 Tìm X(k) = { X(i), X(i+1), X(i+2), , X(n)}; If ki Then Đổi chỗ(X(k), X(i)); Dãy X(1), X(2), , X(n) không giảm For i:=1 to n-1 k:=i; for j:=i+1 to n If X(j) < X(k) Then k:=j; If ki Then Đổi_chỗ(X(i),X(k)); End For Cácthuậttoán xếp/7 of 44 Selection sort Đánh giá: Dễ dàng thấy bước lặp thứ i có n-i phép so sánh phép hoán vị; Vậy suy thuật tốn có n(n-1)/2 phép so sánh n-1 phép hốn vị Thuật tốn có độ phức tạp O(n2) Trong trường hợp xấu thuật tốn có số phép tốn so với thuậttoán chèn, đặc biệt số phép hốn vị nhiều so với thuật tốn xếp chèn Điều có lợi liệu lớn Cácthuậttoán xếp/8 of 44 Insertion sort Bài toán: Sắp xếp mảng số nguyên X(1), X(n) theo thứ tự khơng giảm Mơ tả thuật tốn Giả sử có phần đầu mảng B(i-1) = không giảm; Kiểm tra tới phần tử X(i); Tìm vị trí "thích hợp" X(i) dãy B(i-1) chèn vào Sau bước 2) dãy B(i) =