Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 50 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
50
Dung lượng
5,74 MB
Nội dung
CHƯƠNG Sorting and Searching NỘI DUNG: 6.1 Đặt vấn đề 6.2 Các thuật toán xếp đơn giản 6.3 Thuật toán Quick-Sort 6.4 Thuật toán Merge-Sort 6.5 Thuật toán Heap-Sort 6.6 Thuật toán Shell-Sort 6.7 Thuật toán Radix-Sort 6.8 Tìm kiếm tuyến tính 6.9 Tìm kiếm nhị phân 6.10 Case Study 6.1 Giới thiệu toán Một vấn đề quan trọng bậc khoa học máy tính tốn tìm kiếm (Searching Problem) Có thể nói, hầu hết hoạt động người dùng ứng dụng tin học triển khai liên quan đến tìm kiếm Bài tốn tìm kiếm phát biểu sau: Bài tốn tìm kiếm: Cho dãy gồm n đối tượng r1, r2, , rn Mỗi đối tượng ri tương ứng với khóa ki (1≤i ≤n) Nhiệm vụ tìm kiếm xây dựng thuật tốn tìm đối tượng có giá trị khóa X cho trước X cịn gọi khóa tìm kiếm hay tham biến tìm kiếm (arrgument) Cơng việc tìm kiếm hồn thành hai tình huống: • Nếu tìm thấy đối tượng có khóa X tập đối tượng ta nói phép tìm kiếm thành cơng (successful) • Nếu khơng tìm thấy đối tượng có khóa X tập đối tượng ta nói phép tìm kiếm khơng thành cơng (unsuccessful) Trong tìm kiếm, ta ln hiểu tìm kiếm đối tượng tổng quát (các ghi) Để đơn giản, xem đối tượng số thuật tốn trình trình bày Sắp xếp phương pháp bố trí lại đối tượng theo trật tự Ví dụ bố trí theo thứ tự tăng dần giảm dần dãy số, bố trị theo thứ tự từ điển xâu ký tự Mục tiêu xếp để lưu trữ tìm kiếm đối tượng (thơng tin) để đạt hiệu cao tìm kiếm Có thể nói, xếp sân sau trình tìm kiếm Muốn tìm kiếm cung cấp thơng tin nhanh ta cần phải xếp thơng tin cho hợp lý Bài tốn xếp phát biểu sau: Bài toán xếp: Cho dãy gồm n đối tượng r1, r2, , rn Mỗi đối tượng ri tương ứng với khóa ki (1≤i ≤n) Nhiệm vụ xếp xây dựng thuật tốn bố trí đối tượng theo trật tự giá trị khóa Trong mục tiếp theo, xem tập đối tượng cần xếp tập số Việc mở rộng số cho ghi tổng quát thực tương tự cách thay đổi kiểu liệu tương ứng Cũng giống tìm kiếm, việc làm không làm chất thuật toán 6.2 Các thuật toán xếp đơn giản Các thuật tốn xếp đơn giản trình bày bao gồm: • Thuật tốn xếp kiểu lựa chọn (Selection Sort) • Thuật tốn xếp kiểu chèn (Insertion Sort) • Thuật tốn xếp kiểu sủi bọt (Bubble Sort) 6.2.1 Thuật toán Selection-Sort Thuật toán xếp đơn giản đề cập đến thuật toán xếp kiểu chọn Thuật toán thực xếp dãy đối tượng cách lặp lại việc tìm kiếm phần tử có giá trị nhỏ từ thành phần chưa xếp mảng đặt vào vị trí dãy Trên dãy đối tượng ban đầu, thuật tốn ln trì hai dãy con: • Dãy xếp: phần tử bên trái dãy • Dãy chưa xếp phần tử bên phải dãy Quá trình lặp kết thúc dãy chưa xếp lại phần tử Thuật tốn Selection-Sort: Input: • Dãy đối tượng (các số) : Arr[0], Arr[1], ,Arr[n-1] • Số lượng đối tượng cần xếp: n Output: • Dãy đối tượng xếp (các số) : Arr[0], Arr[1], ,Arr[n-1] Formats: Selection-Sort(Arr, n); Actions: for (i =0; i= && Arr[j] > key) { //Duyệt lùi từ vị trí j=i-1 Arr[j+1] = Arr[j]; //dịch chuyển Arr[j] lên vị trí Arr[j+1] j = j-1; } Arr[j+1] = key; // vị trí thích hợp key dãy Arr[j+1] } End Kiểm nghiệm thuật toán: Arr[] = { 9, 7, 12, 8, 6, }, n = Bước Arr[j+1]=key Dãy số Arr[] =? i=1 Arr[0] =9 Arr[] = {7, 9, 12, 8, 6, 5} i=2 Arr[2] =12 Arr[] = {7, 9, 12, 8, 6, 5} i=3 Arr[1] =8 Arr[] = {7, 8, 9, 12, 6, 5} i=4 Arr[0] =6 Arr[] = {6, 7, 8, 9, 12, 5} i=5 Arr[0] =5 Arr[] = {5, 6, 7, 8, 9, 12} Độ phức tạp thuật toán: O(n2), với n số lượng phần tử dãy Trong trường hợp tốt dãy độ phức tạp O(n) 6.2.3 Thuật toán Bubble-Sort Thuật toán xếp kiểu sủi bọt thực đơn giản cách tráo đổi hai phần từ liền kề chúng chưa xếp Thuật toán thực sau: Thuật tốn Bubble-Sort: Input: • Dãy đối tượng (các số) : Arr[0], Arr[1], ,Arr[n-1] • Số lượng đối tượng cần xếp: n Output: • Dãy đối tượng xếp (các số) : Arr[0], Arr[1], ,Arr[n-1] Formats: Insertion-Sort(Arr, n); Actions: for (i = 0; i < n; i++) { //lặp i=0, 1, 2, ,n for (j=0; j Arr[j+1] ) { //nếu Arr[j]>Arr[j+1] đổi chỗ temp = Arr[j]; Arr[j] = Arr[j+1]; Arr[j+1] = temp; } } } End ... 43, 9, 82, 10} Arr[] = { 3, 27, 38, 43, 9, 10, 82} Arr[]= { 3, 9, 10, 27, 38, 43, 82} 6.5 Thuật toán Heap-Sort 6.5 .1 Giới thiệu thuật toán Thuật toán Heap-Sort thực dựa cấu trúc liệu Heap Nếu ta... tương tự cách thay đổi kiểu liệu tương ứng Cũng giống tìm kiếm, việc làm khơng làm chất thuật tốn 6.2 Các thuật toán xếp đơn giản Các thuật toán xếp đơn giản trình bày bao gồm: • Thuật tốn xếp kiểu... (Selection Sort) • Thuật tốn xếp kiểu chèn (Insertion Sort) • Thuật toán xếp kiểu sủi bọt (Bubble Sort) 6.2 .1 Thuật toán Selection-Sort Thuật toán xếp đơn giản đề cập đến thuật toán xếp kiểu chọn Thuật