Thuật toán sắp xếp

3 172 0
Thuật toán sắp xếp

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

Thông tin tài liệu

Thuật toán xếp Thuật toán xếp Bởi: Wiki Pedia Trong khoa học máy tính toán học, thuật toán xếp thuật toán xếp phần tử danh sách (hoặc mảng theo thứ tự (tăng giảm)) Người ta thường xét trường hợp phần tử cần xếp số Bài toán xếp nhiều nhà khoa học quan tâm Phân loại thuật toán xếp Sắp xếp ổn định Một thuật toán xếp gọi xếp ổn định sau tiến hành xếp vị trí tương đối phần tử không bị thay đổi Săp xếp so sánh Một thuật toán xếp gọi xếp so sánh trình thực thuật toán ta tiến hành so sánh khoá đổi chỗ phần tử cho Đa số thuật toán xếp xếp so sánh, riêng xếp đếm phân phối xếp so sánh Một số thuật toán xếp Sắp xếp bọt Sắp xếp bọt (bubble sort) phương pháp xếp đơn giản, dễ hiểu thường dạy khoa học máy tính Giải thuật đầu tập liệu Nó so sánh hai phần tử đầu, phần tử đứng trước lớn phần tử đứng sau đổi chỗ chúng cho Tiếp tục làm với cặp phần tử cuối tập hợp liệu Sau quay lại với hai phần tử đầu không cần phải đổi chỗ 1/3 Thuật toán xếp Sắp xếp chèn Sắp xếp chèn (insertion sort) thuật toán xếp hiệu với danh sách nhỏ Nó lấy phần tử danh sách chèn vào vị trí thích hợp danh sách Sắp xếp chọn Sắp xếp chọn (selectionÓ sort) phương pháp xếp cách chọn phần tử bé xếp vào vị trí thứ nhất, tương tự với phần tử nhỏ t Sắp xếp trộn Sắp xếp trộn (merge sort) với xếp nhanh hai thuật toán xếp dựa vào tư tưởng "chia để trị" (divide and conquer) Thủ tục việc trộn hai danh sách xếp vào danh sách theo thứ tự Nó bắt đầu trộn cách so sánh hai phần tử (chẳng hạn phần tử thứ với phần tử thứ hai, sau thứ ba với thứ tư ) sau kết thúc bước chuyển sang bước Ở bước trộn danh sách hai phần tử thành danh sách bốn phần tử Cứ hai danh sách cuối trộn thành Sắp xếp vun đống Sắp xếp vun đống (heapsort) phương pháp xếp chọn Ở bước xếp chọn ta chọn phần tử lớn (hoặc nhỏ nhất) đặt vào cuối (hoặc đầu) danh sách, sau tiếp tục với phần lại danh sách Thông thường xếp chọn chạy thời gian O(n2) Nhưng heapsort giảm độ phức tạp cách sử dụng cấu trúc liệu đặc biệt gọi đống (heap) Đống nhị phân mà trọng số đỉnh cha lớn trọng số đỉnh Một danh sách liệu vun thành đống, gốc phần tử lớn nhất, thuật toán giải phóng khỏi đống để đặt vào cuối danh sách Sắp xếp vun đống chạy thời gian O(n log n) Sắp xếp nhanh Sắp xếp nhanh (quicksort) thuật toán theo tư tưởng chia để trị, dựa thủ tục phân chia sau: để chia dãy ta chọn phần tử gọi "chốt" (pivot), chuyển tất phần tử nhỏ chốt trước chốt, chuyển tất phần tử lớn chốt sau Thủ tục thực thời gian tuyến tính Tiếp tục phân chia dãy dãy phần tử Điểm khác biệt xếp nhanh xếp trộn xếp trộn việc xác định thứ tự xác định "trộn", tức khâu tổng hợp lời giải sau toán 2/3 Thuật toán xếp giải, xếp nhanh quan tâm đến thứ tự phần tử phân chia danh sách thành hai danh sách Ngoài nhiều giải thuật xếp khác, nhiều giải thuật xếp cải tiến từ giải thuật Trong sau giải thuật liệt kê trên, ta thường coi giải thuật chèn, chọn, bọt giải thuật bản, độ phức tạp trường hợp trung bình chúng O(n2) Ba giải thuật lại thường coi giải thuật cao cấp, độ phức tạp tính toán trung bình chúng n.lnn Sắp xếp theo số Sắp xếp theo số (radix sort) dựa tính chất "số" khóa Trong giải thuật xếp theo số, ta không so sánh giá trị khóa, mà so sánh thành phần khóa Giả sử khóa số biểu diễn theo hệ ghi số số M Khi xếp theo số so sánh ký số Chúng ta mô tả cách số M=10 Giả sử phải hồ sơ đánh số chữ số thập phân Đầu tiên ta chia hồ sơ vào đống có chữ số hàng trăm (đồng thới xếp đống theo thứ tự chữ số hàng trăm), đống lại phân chia theo chữ số hàng chục, cuối đống có chữ số hàng trăm hàng chục, xếp theo thứ tự chữ số hàng đơn vị Trong máy tính, đương nhiên việc xếp theo số nhị phân (cơ số 2) số lũy thừa thuận lợi Trong trường hợp số 2, việc phân hoạch tương tự phân hoạch Quick Sort, khác chỗ cách chọn phần tử chốtmn Sắp xếp đếm phân phối Sắp xếp đếm phân phối phương pháp xếp có độ phức tạp tuyến tính trường hợp khóa nhận hữu hạn giá trị khoảng cho trước Để đơn giản ta giả sử phần tử danh sách a[1 n] nhận giá trị tự nhiên khoảng [1 M] Sắp xếp đếm phân phối đếm phần tử thuộc danh sách nhận giá trị k với \le k \le M Các giá trị đếm đươc ghi vào mảng Counter[1 M] Sau duyệt theo k từ đến M, ta xếp Counter[k] phần tử vào danh sách a[1 n] 3/3 .. .Thuật toán xếp Sắp xếp chèn Sắp xếp chèn (insertion sort) thuật toán xếp hiệu với danh sách nhỏ Nó lấy phần tử danh sách chèn vào vị trí thích hợp danh sách Sắp xếp chọn Sắp xếp chọn... (selectionÓ sort) phương pháp xếp cách chọn phần tử bé xếp vào vị trí thứ nhất, tương tự với phần tử nhỏ t Sắp xếp trộn Sắp xếp trộn (merge sort) với xếp nhanh hai thuật toán xếp dựa vào tư tưởng "chia... gốc phần tử lớn nhất, thuật toán giải phóng khỏi đống để đặt vào cuối danh sách Sắp xếp vun đống chạy thời gian O(n log n) Sắp xếp nhanh Sắp xếp nhanh (quicksort) thuật toán theo tư tưởng chia

Ngày đăng: 29/12/2015, 10:09

Từ khóa liên quan

Mục lục

  • Thuật toán sắp xếp

  • Phân loại thuật toán sắp xếp

    • Sắp xếp ổn định

    • Săp xếp so sánh

    • Một số thuật toán sắp xếp

      • Sắp xếp nổi bọt

      • Sắp xếp chèn

      • Sắp xếp chọn

      • Sắp xếp trộn

      • Sắp xếp vun đống

      • Sắp xếp nhanh

      • Sắp xếp theo cơ số

      • Sắp xếp đếm phân phối

Tài liệu cùng người dùng

Tài liệu liên quan