1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Lecture 06 các thuật toán sắp xếp tài liệu Kỹ thuật Lập trình

43 822 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 43
Dung lượng 432 KB

Nội dung

Giới thiệu chung    Các thuật toá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ật toá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ật toán gặp phải Các thuật toán xếp/2 of 44 Giới thiệu chung    Nếu ta biểu diễn thuật toá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!)  Như số phép so sánh tối thiểu phải thực [log 2(n!)] Các thuật toán xếp/3 of 44 Giới thiệu chung Nhận xét:  Dễ dàng thấy n!4 n!> nn/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ác thuật toán xếp/4 of 44 Giới thiệu chung Chứng minh 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 Ta chứng minh (n+1)! > (n+1)(n+1)/4 Xét bất đẳng thức: (n+1)nn/4 >(n+1)(n+1)/4, ⇔ nn/4>(n+1)(n-3)/4 ⇔ nn >(n+1)n-3 ⇔ (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 Các thuật toán xếp/5 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 toán Thuật toán gọi thuật toán chọn hay xếp Các thuật toán xếp/6 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; Ý tưởng:  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(n1) thích hợp cho dãy Các thuật toán xếp/7 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 k≠i 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; End For If k≠i Then Đổi_chỗ(X(i),X(k)); End For Các thuật toán xếp/8 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 hốn vị; Vậy suy thuật tốn có n(n-1)/2 phép so sánh n-1 phép hoán vị Thuật tốn có độ phức tạp O(n2) Nhận xét: Trong trường hợp xấu thuật tốn có số phép tốn so với thuật toá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ác thuật toán xếp/9 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 Ý tưởng Xuất phát từ mảng B(1) mảng có phần tử Giả sử có phần đầu mảng B(i-1) = không giảm (B(i-1) mảng xếp); Bước 1: 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 này, dãy B(i) =

Ngày đăng: 28/08/2014, 21:58

TỪ KHÓA LIÊN QUAN

w