1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng sắp xếp trong lập trình window

71 852 4
Tài liệu đã được kiểm tra trùng lặp

Đ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 71
Dung lượng 2,65 MB

Nội dung

Bài giảng sắp xếp trong lập trình window

CHƯƠNG 4: SắP XếP (SORTING) Nội dungTổng quanCác phương pháp sắp xếp thông dụngChương 4: Sắp xếp2 Tổng quanTại sao phải sắp xếp?Để có thể sử dụng thuật toán tìm nhị phânĐể thực hiện thao tác nào đó được nhanh hơnĐịnh nghĩa bài toán sắp xếp Sắp xếp là quá trình xử lý một danh sách các phần tử để đặt chúng theo một thứ tự thỏa mãn một tiêu chuẩn nào đó dựa trên nội dung thông tin lưu giữ tại mỗi phần tửChương 4: Sắp xếp3 Các phương pháp sắp xếp thông dụng Phương pháp Đổi chỗ trực tiếp (Interchange sort)Phương pháp Nổi bọt (Bubble sort)Phương pháp Chèn trực tiếp (Insertion sort)Phương pháp Chọn trực tiếp (Selection sort)Phương pháp dựa trên phân hoạch (Quick sort)Chương 4: Sắp xếp4 Interchange SortKhái niệm nghịch thế: Xét một mảng các số a[0], a[1], … a[n-1]Nếu có i<j và a[i] > a[j], thì ta gọi đó là một nghịch thếMảng chưa sắp xếp sẽ có nghịch thếMảng đã có thứ tự sẽ không chứa nghịch thếa[0] ≤ a[1] ≤ … ≤ a[n -1]5Chương 4: Sắp xếp Interchange Sort – Ý tưởngNhận xét:Để sắp xếp một dãy số, ta có thể xét các nghịch thế có trong dãy và làm triệt tiêu dần chúng điÝ tưởng: Xuất phát từ đầu dãy, tìm tất cả nghịch thế chứa phần tử này, triệt tiêu chúng bằng cách đổi chỗ phần tử này với phần tử tương ứng trong cặp nghịch thếLặp lại xử lý trên với các phần tử tiếp theo trong dãyChương 4: Sắp xếp6 Interchange Sort – Ví dụ2 8 5 1 6 4 15121 2 3 4 5 6 70ij1Nếu a[i] > a[j] thì đổi chỗ a[i], a[j]Chương 4: Sắp xếp7 12 8 5 2 6 4 1511 2 3 4 5 6 70ij2Nếu a[i] > a[j] thì đổi chỗ a[i], a[j]Interchange Sort – Ví dụChương 4: Sắp xếp8 Interchange Sort – Ví dụ2 12 8 5 6 4 1511 2 3 4 5 6 70ij4Nếu a[i] > a[j] thì đổi chỗ a[i], a[j]Chương 4: Sắp xếp9 Interchange Sort – Ví dụ2 4 12 8 6 5 1511 2 3 4 5 6 70ij5Nếu a[i] > a[j] thì đổi chỗ a[i], a[j]Chương 4: Sắp xếp10 [...]... này phụ thuộc vào tình trạng của dãy số ban đầu, nên chỉ có thể ước lược trong từng trường hợp như sau: 43 Chương 4: Sắp xếp Bubble Sort – Ví dụ 12 2 8 5 4 6 151 1 2 3 4 5 6 70 i j 2 Nếu a[j]<a[j-1] thì đổi chỗ a[j], a[j-1] 18 Chương 4: Sắp xếp Nội dung  Tổng quan  Các phương pháp sắp xếp thông dụng Chương 4: Sắp xếp 2 Bubble Sort - Cài đặt void BubbleSort(int a[], int n) { for... a[min]) 47 Chương 4: Sắp xếp Bubble Sort - Đánh giá giải thuật  Số lượng các phép so sánh xảy ra khơng phụ thuộc vào tình trạng của dãy số ban đầu  Số lượng phép hoán vị thực hiện tùy thuộc vào kết quả so sánh 26 Chương 4: Sắp xếp Selection Sort – Ý tưởng  Nhận xét:  Mảng có thứ tự thì a[i] = min(a[i], a[i+1], …, a[n-1])  Ý tưởng: mô phỏng một trong những cách sắp xếp tự nhiên nhất trong thực... 7) Swap(a[i], a[min]) 49 Chương 4: Sắp xếp Bubble Sort – Ví dụ 2 4 5 12 8 6 151 1 2 3 4 5 6 70 i j 6 Nếu a[j]<a[j-1] thì đổi chỗ a[j], a[j-1] 21 Chương 4: Sắp xếp Insertion Sort – Thuật toán // input: dãy (a, n) // output: dãy (a, n) đã được sắp xếp  Bước 1: i = 1; // giả sử có đoạn a[0] đã được sắp  Bước 2: x = a[i]; //Tìm vị trí pos thích hợp trong đoạn a[0] //đến a[i] để chèn... a[0] sẽ có đoạn a[0] a[1] được sắp  Thêm a[2] vào đoạn a[0] a[1] để có đoạn a[0] a[1] a[2] được sắp  Tiếp tục cho đến khi thêm xong a[n-1] vào đoạn a[0] a[1] a[n-1] sẽ có dãy a[0] a[1]… A[n-1] được sắp 30 Chương 4: Sắp xếp Insertion Sort – Ví dụ 2 5 6 8 12 4 151 i x 1 2 3 4 5 6 70 pos Chèn a[6] vào (a[0] … a[6]) 4 37 Chương 4: Sắp xếp Bubble Sort – Ví dụ 2... 4: Sắp xếp 12 8 5 2 6 4 151 1 2 3 4 5 6 70 i j 2 Nếu a[i] > a[j] thì đổi chỗ a[i], a[j] Interchange Sort – Ví dụ Chương 4: Sắp xếp 8 Interchange Sort – Ví dụ 2 4 5 6 8 12 151 1 2 3 4 5 6 70 Nếu a[i] > a[j] thì đổi chỗ a[i], a[j] Chương 4: Sắp xếp 11 Insertion Sort – Ý tưởng Chi tiết hơn:  Dãy ban đầu a[0] , a[1] , , a[n-1], xem như đã có đoạn gồm một phần tử a[0] đã được sắp  Thêm... giảm điều kiện kiểm tra khi xác định vị trí pos 42 Chương 4: Sắp xếp Các phương pháp sắp xếp thông dụng  Phương pháp Đổi chỗ trực tiếp (Interchange sort)  Phương pháp Nổi bọt (Bubble sort)  Phương pháp Chèn trực tiếp (Insertion sort)  Phương pháp Chọn trực tiếp (Selection sort)  Phương pháp dựa trên phân hoạch (Quick sort) Chương 4: Sắp xếp 15 Selection Sort – Ví dụ 2 4 5 12 6 8 151 i min 1... trí để dành chỗ cho x  Bước 4: a[pos] = x; // có đoạn a[0] a[i] đã được sắp  Bước 5: i = i+1; Nếu i < n: Lặp lại Bước 2 Ngược lại: Dừng 40 Chương 4: Sắp xếp Interchange Sort – Thuật toán // input: dãy (a, n) // output: dãy (a, n) đã được sắp xếp  Bước 1: i = 0; // bắt đầu từ đầu dãy  Bước 2: j = i+1;  Bước 3: Trong khi j < n thực hiện:  Nếu a[i]>a[j] thì đổi chỗ a[i], a[j]  j... (i < n-1): Lặp lại Bước 2  Ngược lại: Dừng Chương 4: Sắp xếp 12 Interchange Sort  Khái niệm nghịch thế:  Xét một mảng các số a[0], a[1], … a[n-1]  Nếu có i<j và a[i] > a[j], thì ta gọi đó là một nghịch thế  Mảng chưa sắp xếp sẽ có nghịch thế  Mảng đã có thứ tự sẽ không chứa nghịch thế a[0] ≤ a[1] ≤ … ≤ a[n -1] 5 Chương 4: Sắp xếp Insertion Sort – Ví dụ 2 8 5 1 6 4 1512 i x 1... – Ví dụ 2 8 5 1 6 4 1512 i x 1 2 3 4 5 6 70 pos 2 Chèn a[1] vào (a[0], a[1]) 32 Chương 4: Sắp xếp Insertion Sort – Ví dụ 2 4 5 6 8 12 151 i x 1 2 3 4 5 6 70 pos Chèn a[7] vào (a[0] … a[7]) 15 38 Chương 4: Sắp xếp Insertion Sort – Ví dụ 2 8 5 1 6 4 1512 1 2 3 4 5 6 70 31 Chương 4: Sắp xếp Interchange Sort - Đánh giá giải thuật  Số lượng các phép so sánh xảy ra khơng phụ... lượng phép hoán vị thực hiện tùy thuộc vào kết quả so sánh Chương 4: Sắp xếp 14 Selection Sort – Ví dụ 2 4 5 12 6 8 151 i min 1 2 3 4 5 6 70 Find MinPos(4, 7) Swap(a[i], a[min]) 50 Chương 4: Sắp xếp Bubble Sort – Ví dụ 2 12 4 8 5 6 151 1 2 3 4 5 6 70 i j 4 Nếu a[j]<a[j-1] thì đổi chỗ a[j], a[j-1] 19 Chương 4: Sắp xếp . CHƯƠNG 4: SắP XếP (SORTING) Nội dungTổng quanCác phương pháp sắp xếp thông dụngChương 4: Sắp xếp2 Tổng quanTại sao phải sắp xếp? Để có thể sử. phânĐể thực hiện thao tác nào đó được nhanh hơnĐịnh nghĩa bài toán sắp xếp Sắp xếp là quá trình xử lý một danh sách các phần tử để đặt chúng theo một

Ngày đăng: 17/08/2012, 10:08

TỪ KHÓA LIÊN QUAN

w