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

BÁO cáo ASSIGNMENT đề tài 4 GIẢI THUẬT QUICK SORT

17 9 0

Đ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 17
Dung lượng 376,79 KB

Nội dung

  ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA KHOA HỌC & KỸ THUẬT MÁY TÍNH BÁO CÁO ASSIGNMENT ĐỀ TÀI 4: GIẢI THUẬT QUICK SORT GVHD:   ThS TTrần rần Thanh Bìn Bìnhh SV thực hiện:   Tên Đinh Tiến Khởi Tp Hồ Chí Minh, Tháng 11/2022 MSSV 2013537   Trường Đại Học Bách Khoa Tp.Hồ Chí Minh Khoa Khoa Học & Kỹ Thuật Máy Tính MỤC LỤC   Đề Bài     Giải Thuật Thuật Quick Sort   2.1   Giới Thiệu  Thiệu   2.2   Các Thức Hoạt Động Động   2.3   Độ Phức Tạp Tạp Của Giải Thuật Thuật   2.3.1   Thời Gian Thực Thực Thi   2.3.2   Không Gian Gian Bộ Nhớ   2.4   Ưu Điển   2.5   Nhược Điểm  Điểm     Hiện Thực Giải Thuật Thuật     Hiện Thực Giải Thuật Thuật Sử Dụng Assem Assembly bly   4.1   Data Section  Section  4.2   Xây Dựng Dựng FFunction unction   4.2.1   Hàm Print  Print  4.2.2   Hàm Swap   4.2.3   Hàm Partition   4.2.4   Hàm Quick_Sort  Quick_Sort   4.2.5   Hàm Main  Main  4.3   Kết Quả   4.3.1   Test Case   4.3.2   Test Case   4.3.3   Test Case   4.3.4   Test Case     Thống Kê Lệnh Lệnh - Khảo Sát Lệnh Lệnh - Thời Gian Thực Thực Thi Thi   5.1   Thống Kê Kê Lệnh - Khảo Khảo Sát Lệnh Lệnh   5.1.1   Test Case   5.1.2   Test Case   5.1.3   Test Case   5.1.4   Test Case   5.2   Thời Gian Gian Thực Thi     Kết Luận   Tài Liệu Tham Khảo Báo cáo Bài tập lớn Kiến Trúc Máy Tính(CO2008)   2 2 2 3 3 5 5 6 10 11 11 11 12 12 12 12 12 13 13 14 14 15 16 Trang 1/16   Trường Đại Học Bách Khoa Tp.Hồ Chí Minh Khoa Khoa Học & Kỹ Thuật Máy Tính Đề Bài Đề Tài 04: Sắp xếp chuỗi Cho chuỗi số nguyên 50 phần tử Sử dụng hợp ngữ assembly MIPS, viết thủ tục xếp chuỗi theo thứ tự tăng dần theo giải thuật quick sort Yêu cầu xuất bước trình demo Gi Giải ải Thuậ Thuậtt Qu Quic ickk So Sort rt 2.1 2.1 Gi Giới ới Th Thiệ iệuu Giải thuật Quick Sort giải thuật xếp mang tính in-place tính  in-place algorithm, được algorithm,  được phát triển nhà nghiên cứu khoa học máy tính Tony Hoare vào năm 1959 phát hành thức vào năm 1961 Ngày thuật tốn cịn vận dụng cách rộng rãi q trình xếp theo thơng tin trích dẫn từ wikipedia Quick sort giải thuật chia để trị (Divide-and-conquer (Divide-and-conquer algorithm algorithm) ) Tên gọi quick sort ám việc giải thuật quick sort có độ hiệu mặt thời gian thực thi nhớ tính theo trung bình trường hợp xảy Trường hợp worst case xảy mảng xếp sẵn nhìn chung tính ổn định giải thuật hoàn toàn hiệu 2.2 Cá Cáccquick Th Thức ức Ho ạtđộng Độ Động ng Thuật toán sortHoạt hoạt dựa việc lựa chọn phần tử vách ngăn (pivot) từ mảng phân vùng phần tử mảng thành vùng riêng biệt (sub-array) tùy thuộc vào chúng lớn hay nhỏ phần tử pivot Sau đó, vùng phân chia tiếp tục thực thao tác dựa kỹ thuật đệ quy phần tử mảng có số lượng nhỏ mảng xếp Cuối cùng, dựa vào giải thuật đệ quy, tiến hành nối tất các sub-array tạo thành mảng xếp Bên cạnh đó, việc lựa chọn pivot mảng tồn nhiều phương thức khác Do đó, việc lựa chọn pivot ảnh hưởng đến thời gian thực thi né tránh trường hợp worst-case xảy Các phương thức thường gặp: + Lựa chọn phần tử đầu + Lựa chọn phần tử cuối + Lựa chọn phần tử (median as pivot) pivot) + Lựa chọn phần tử ngẫu nhân - tối ưu việc tránh worst-cas worst-case e 2.3 Độ Phức Tạp Của Giải Thuật Thuật 2.3.1 2.3 Thời Thời Gian Gian Thực Thực Thi Thời gian thực thi giải thuật quick sort đánh sau: + Best Case:   n log n + Average Case:   n log n + Worst Case:   n Giải thuật thuật có độ hiệu cao xét mặt thời gian thực thi tính ổn định Báo cáo Bài tập lớn Kiến Trúc Máy Tính(CO2008) Trang 2/16   Trường Đại Học Bách Khoa Tp.Hồ Chí Minh Khoa Khoa Học & Kỹ Thuật Máy Tính 2.3 2.3.22 Khơn Khơngg G Gia iann Bộ Bộ Nhớ Nhớ Không gian nhớ mà giải thuật xử dụng đánh sau: + Average Case:  log n + Worst Case:   n Khi so sánh với giải thuật khác, Quick Sort sử dụng nhớ mức vừa phải, xét khía cạnh giải thuật đệ quy, thuật tốn tối ưu vùng nhớ 2.4 Ưu Điển Thời gian thực thi trung bình đánh giá nhanh Do đó, quick sort sử dụng để xây dựng thư viện có sẵn ngơn ngữ lập trình Java, C++, etc 2.5 2.5 Nhược hược Đi Điểm ểm Mặc dù thời gian thực thi mức tốt tính ổn định thuật tốn chưa cao Phụ thuộc hoàn toàn vào giải thuật lựa chọn pivot Từ đó, tránh trường hợp worst case Hi Hiện ện Th Thực ực Gi Giải ải Th Thuậ uậtt Sau nghiên cứu phương pháp lựa chọn pivot cho giải thuật Nhóm em định lựa chọn phần tử cuối làm pivot Để thực thuật toán ta cần xây dựng hàm  partition() - mục đính nhằm tìm kiếm vị trí xác pivot phân vùng mảng để thực cho bước đệ quy ; Hàm  swap()  có sẵn thư viện ngơn ngữ lập trình; Và hàm  QuickSort()  hiện thực thao tác đệ quy cho sub-array - Ý tưởng hàm   P artiti artition on(): + Hàm nhận tham số đầu vào bao gồm địa phần tử đầu, vị trí phần tử đầu vị trí phần tử cuối array sub-array + Sau hàm thực thành cơng kết thúc, hàm trả vị trí xác pivot array sub-array đồng thời phân vùng array sub-array thành vùng lớn nhỏ pivot cho công đoạn đệ quy + Bước 1: Gán giá trị pivot cho phần tử cuối cùng, pivotIndex vị trí bắt đầu array sub-array sub-array + Bước 2: Sử dụng vòng lặp với chạy  i  chạy từ vị trí bắt đầu - start đến vị trí kết thúc array sub-array - end Trong vòng lặp ta tiến hành so sáng giá trị phần tử mảng vị trí   i và giá trị pivot gán ban đầu Nếu điều kiện xảy ra, ta tiến hành hoán đổi giá trị vị trí   i  cho vị trí  pivotIndex  sau tăng giá trị pivotIndex lên + Bước 3: Hốn đổi giá pivot vị trí cuối cho giá trị phần tử vị trí pivotIndex trả giá trị  pivotIndex - Ý tưởng hàm  QuickSort(): + Nhận tham số đầu vào bao gồm địa đầu, vị trí đầu vị trí cuối array sub-array Hàm khơng có giá trị trả Báo cáo Bài tập lớn Kiến Trúc Máy Tính(CO2008) Trang 3/16   Trường Đại Học Bách Khoa Tp.Hồ Chí Minh Khoa Khoa Học & Kỹ Thuật Máy Tính + Bước 1: Xét điều kiện so sánh vị trí phần tử đầu phần tử cuối Nếu điều kiện đưa thỏa mãn, gọi hàm   P artiti artition on()  với tham số đầu vào tương ứng để nhận giá trị pivot đầu + Bước 2: Tiến hành gọi đệ quy với phân vùng vừa chia từ hàm   P artiti artition on() Hình 1:  Sơ Đồ Quick Sort Với Pivot Đầu Tiên Sau nghiên cứu chế giải thuật, tiến hành thực phương thức sử dụng ngôn ngữ cấp cao, đơn cử C++: 11 16   int Partition( Partition(int int* *   array, array, int start, start, int  int   end end) ) { end]; ];   //   Set pivot  pivot   as   last element element int pivot =   array[ array[end start; ;   //   Set partition partition   ind index ex as sta start rt ind index ex int partition_ partition_index index =   start for(int for (int i =   start; start; i< i

Ngày đăng: 01/12/2022, 10:40

HÌNH ẢNH LIÊN QUAN

Hình 1: - BÁO cáo ASSIGNMENT đề tài 4 GIẢI THUẬT QUICK SORT
Hình 1 (Trang 5)
Hình 1:  Sơ Đồ QuickSort Với Pivot Đầu Tiên  Sơ Đồ QuickSort Với Pivot Đầu Tiên - BÁO cáo ASSIGNMENT đề tài 4 GIẢI THUẬT QUICK SORT
Hình 1  Sơ Đồ QuickSort Với Pivot Đầu Tiên  Sơ Đồ QuickSort Với Pivot Đầu Tiên (Trang 5)
Hình 5: - BÁO cáo ASSIGNMENT đề tài 4 GIẢI THUẬT QUICK SORT
Hình 5 (Trang 14)
Hình 5:  Bảng Phân Tích Câu LệnhTestCase 1  Bảng Phân Tích Câu LệnhTestCase 1 - BÁO cáo ASSIGNMENT đề tài 4 GIẢI THUẬT QUICK SORT
Hình 5  Bảng Phân Tích Câu LệnhTestCase 1  Bảng Phân Tích Câu LệnhTestCase 1 (Trang 14)
Hình 7: - BÁO cáo ASSIGNMENT đề tài 4 GIẢI THUẬT QUICK SORT
Hình 7 (Trang 15)
Hình 7:  Bảng Phân Tích Câu LệnhTestCase 3  Bảng Phân Tích Câu LệnhTestCase 3 - BÁO cáo ASSIGNMENT đề tài 4 GIẢI THUẬT QUICK SORT
Hình 7  Bảng Phân Tích Câu LệnhTestCase 3  Bảng Phân Tích Câu LệnhTestCase 3 (Trang 15)
w