Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 78 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
78
Dung lượng
1,52 MB
Nội dung
Chương 6: Sắp xếp Giảng viên: Ths Nguyễn Thị Khiêm Hịa Khoa Cơng nghệ Thơng tin - Đại học Ngân hàng TP.HCM Nội dung Các phương pháp xếp Đánh giá phương pháp Quick_Sort Heap_Sort Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM Mục tiêu Trình bày thuật tốn thơng dụng cho việc xếp (sắp xếp nhớ - RAM) Minh họa thuật tốn Đánh giá thuật tốn Khoa Cơng nghệ Thông tin - Đại học Ngân hàng TP.HCM Đặt vấn đề Trong công việc hàng ngày tốn quản lý kinh tế cần tìm kiếm liệu Dễ dàng Nhanh chóng Ví dụ: danh sách sinh viên, từ điển … Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM Sắp xếp (Sorting) Định nghĩa Sắp xếp trình tổ chức lại tập hợp k đối tượng theo trật tự Hai mơ hình xếp Sắp xếp (internal), phần tử cần xếp lưu sẵn RAM Sắp xếp (external), số phần tử cần xếp lưu RAM, lại lưu nhớ ngồi Khoa Cơng nghệ Thơng tin - Đại học Ngân hàng TP.HCM Các phương pháp xếp Phương pháp xếp kiểu lựa chọn Phương pháp xếp chèn Phương pháp xếp đổi chỗ Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM Phương pháp xếp kiểu lựa chọn (Selection Sort) Ý tưởng: Tìm phần tử nhỏ đem đầu dãy Loại phần tử khỏi dãy Tiếp tục tìm phần tử nhỏ dãy cịn lại Thuật tốn: Ở bước thứ i ta chọn Ai, Ai+1, …, An phần tử có khóa nhỏ đổi chỗ với Ai Sau n lượt ta có dãy A thứ tự Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM Phương pháp xếp kiểu lựa chọn (Selection Sort) Ví dụ: Cho dãy số: i=7 Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM Phương pháp xếp kiểu lựa chọn (Selection Sort) public void SelectionSort() { int min,vt; for (int i = 0; i < idx-1; i++) { = A[i]; vt = i; for (int j = i + 1; j < idx; j++) { if (A[j] < min) { = A[j]; vt = j; } } if (vt != i) { A[vt] = A[i]; A[i] = min; } } Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM } Phương pháp xếp chèn (Insertion Sort) Thuật toán: Dãy ban đầu A1,A2,…,An xem có đoạn gồm phần tử A1 Thêm A2 vào A1 có đoạn A1A2 Thêm A3 vào A1A2 có đoạn A1A2 A3 Tiếp tục thêm xong An vào đoạn A1,A2,…,An-1 có dãy A1,A2,…,An xếp Khoa Cơng nghệ Thông tin - Đại học Ngân hàng TP.HCM 10 Phương pháp xếp Heap (Heap_Sort) 2 5 12 15 10 Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM 64 Phương pháp xếp Heap (Heap_Sort) 2 8 12 15 10 Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM 65 Phương pháp xếp Heap (Heap_Sort) 5 12 15 10 Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM 66 Phương pháp xếp Heap (Heap_Sort) 5 12 15 10 Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM 67 Phương pháp xếp Heap (Heap_Sort) 5 12 15 10 Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM 68 Phương pháp xếp Heap (Heap_Sort) 5 12 15 10 Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM 69 Phương pháp xếp Heap (Heap_Sort) 5 12 15 10 Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM 70 Phương pháp xếp Heap (Heap_Sort) 5 12 15 10 Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM 71 Phương pháp xếp Heap (Heap_Sort) 5 12 15 10 Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM 72 Phương pháp xếp Heap (Heap_Sort) public void Heap_Sort() { int right = idx - 1; Create_Heap(); while (right > 0) { int tmp = A[0]; A[0] = A[right]; A[right] = tmp; right ; Shift(0, right); } } Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM 73 Phương pháp xếp Heap (Heap_Sort) private void Create_Heap() { int left =(idx-1)/2; while (left >= 0) { Shift(left, idx - 1); left ; } } Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM 74 Phương pháp xếp Heap (Heap_Sort) private void Shift(int left, int right) { int i = left; int j = * i + 1; int x = A[i]; while (j