Cấu trúc dữ liệu và giải thuật - Chương 2 - Tìm kiếm và sắp xếp ppsx

204 427 1
Cấu trúc dữ liệu và giải thuật - Chương 2 - Tìm kiếm và sắp xếp ppsx

Đ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

1 Cấu trúc dữ liệu và giải thuật (Data structure and Algorithms) 2 Tìm kiếm và sắp xếp Ch ươ ng II. 3 I. CÁC GIẢI THUẬT TÌM KIẾM NỘI 1. Tìm kiếm tuyến tính 2. Tìm kiếm nhị phân II. CÁC GIẢI THUẬT SẮP XẾP NỘI 1. Chọn trực tiếp (Selection sort) 2. Chèn trực tiếp (Insertion sort) 3. Đổi chỗ trực tiếp (Interchange sort) 4. Nổi bọt (Buble sort) 5. Sắp xếp cây (Heap sort) 6. Sắp xếp dựa trên phân hoạch (Quick sort) 7. Sắp xếp trộn trực tiếp (Merge sort ) 4 I. CÁC GIẢI THUẬT TÌM KIẾM NỘI 1. Tìm kiếm tuyến tính 2. Tìm kiếm nhị phân 5 * Bài toán tìm ki ế m • Cho dãy n phần tử, giả sử chúng được lưu trữ dưới dạng mảng a[1], a[2], …., a[n], và các phần tử là số tự nhiên. • Hãy tìm vị trí của phần tử có giá trị là x trong mảng •Có 2 phương pháp tìm kiếm: Tìm kiến tuyến tính Tìm kiếm nhị phân 6 1. Tìm ki ế m tuy ế n tính Các bước tiến hành như sau: Bước 1: i:=1; // bắt đầu từ phần tử đầu tiên của dãy Bước 2: So sánh a[1] với x, có 2 khả năng  a[i]=x: Tìm thấy. Dừng  a[i] <>x: Sang Bước 3 Bước 3: i:=i+1; // xét tiếp phần tử kế trong mảng  Nếu i>n: Hết mảng không tìm thấy. Dừng  Ngược lại: Lặp lại Bước 2. a. Tư tưởng giải thuật Tiến hành so sánh x lần lượt với phần tử thứ nhất, thứ 2, …., của mảng cho đến khi gặp được phần tử có khoá cần tìm, hoặc tìm hết mảng mà không thấy x. 7 1. Tìm ki ế m tuy ế n tính Các bước tiến hành như sau: b. Ví dụ: Cho dãy số a: 1546158212 Hãy tìm phần tử x=8 8 1. Tìm ki ế m tuy ế n tính b. Ví dụ: 1546158212 X=8 i=1 : a[1 ]<> 8 9 1. Tìm ki ế m tuy ế n tính b. Ví dụ: 1546158212 X=8 i=2 : a[2]<>8 10 1. Tìm ki ế m tuy ế n tính b. Ví dụ: 1546158212 X=8 i=3 : a[3]=8=x • K ế t qu ả : Tìm th ấ y x=8 ở v ị trí th ứ 3 ! [...]... End; 26 1 Ch n tr c ti p c Vớ d : S p x p dóy tng d n 12 2 8 5 1 6 4 15 27 1 Ch n tr c ti p i ch 12 cho 1 (1 l ph 12 2 8 nt 5 nh nh t trong cỏc s t 1 6 a [2] n a[8]) 4 15 i=1 28 1 Ch n tr c ti p Ph n t 1 2 2 ó ỳng v trớ 8 5 12 6 4 15 i =2 1 vo ỳng v trớ 29 1 Ch n tr c ti p 1 i ch 8 cho 4 2 8 5 12 6 4 15 i=3 1, 2 vo ỳng v trớ 30 1 Ch n tr c ti p Ph n t 1 2 5 ó 4 ỳng v trớ 5 12 6 8 15 i=4 1, 2, 4... i ch 2 12 cho 6 4 5 12 6 8 15 i=5 1, 2, 4, 5 vo ỳng v trớ 32 1 Ch n tr c ti p 1 i ch 2 12 cho 8 4 5 6 12 8 15 i=6 1, 2, 4, 5, 6 vo ỳng v trớ 33 1 Ch n tr c ti p Ph n t 1 2 12 ó ỳng v trớ 4 5 6 8 12 15 i=6 1, 2, 4, 5, 6, 8 vo ỳng v trớ 34 1 Ch n tr c ti p Ph n t 1 2 15 ó 4 ỳng v trớ 5 6 8 12 15 i=6 1, 2, 4, 5, 6, 8, 12 vo ỳng v trớ 35 1 Ch n tr c ti p M ng ó s p x p xong ! 1 2 4 5 6 8 12 15... b c 2 Ng c l i: D ng // ó xột h t t t c cỏc ph n t p 15 2 Tỡm ki m Nh phõn b Vớ d : Cho dóy s a: 1 2 Hóy tỡm ph n t 4 5 6 8 12 15 x=8 Cỏc b c ti n hnh nh sau: 16 2 Tỡm ki m Nh phõn b Vớ d : left=1; right=8; mid=4 1 2 4 5 6 8 12 15 X=8 So sỏnh (x=8) > (a[mid]=5) Tỡm ki m n a bờn ph i left:=4+1=5 right:=8 mid:=(left+right) div 2= 6 17 2 Tỡm ki m Nh phõn b Vớ d : left=5; right=8; mid=6 1 2 4 5 6 8 12 15... nguyờn c lu tr b i m ng a[1], a [2] , , a[n] Theo th t tng d n 22 1.Ch n tr c ti p (Selection Sort) 23 1 Ch n tr c ti p a T t ng gi i thu t Nguyên tắc cơ b n của phơng pháp này là ở lợt thứ i, ta sẽ chọn trong dãy ai, ai+1, , an ph n t nhỏ nhất và đổi chỗ nó với ai Nh vậy sau j lợt, j khoá nhỏ hơn đã lần lợt ở các vị trí thứ nhất, thứ hai, ., thứ j theo đúng thứ tự sắp xếp 24 1 Ch n tr c ti p a T t ng... giỏ tr 0} Begin 1) { Kh i u} l:=1; r:=n; 2) {Tỡm} While l . 1 Cấu trúc dữ liệu và giải thuật (Data structure and Algorithms) 2 Tìm kiếm và sắp xếp Ch ươ ng II. 3 I. CÁC GIẢI THUẬT TÌM KIẾM NỘI 1. Tìm kiếm tuyến tính 2. Tìm kiếm nhị phân II. CÁC GIẢI THUẬT. trên phân hoạch (Quick sort) 7. Sắp xếp trộn trực tiếp (Merge sort ) 4 I. CÁC GIẢI THUẬT TÌM KIẾM NỘI 1. Tìm kiếm tuyến tính 2. Tìm kiếm nhị phân 5 * Bài toán tìm ki ế m • Cho dãy n phần tử,. a: 154615 821 2 Hãy tìm phần tử x=8 8 1. Tìm ki ế m tuy ế n tính b. Ví dụ: 154615 821 2 X=8 i=1 : a[1 ]<> 8 9 1. Tìm ki ế m tuy ế n tính b. Ví dụ: 154615 821 2 X=8 i =2 : a [2] <>8 10 1. Tìm ki ế m

Ngày đăng: 31/07/2014, 23:21

Từ khóa liên quan

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

Tài liệu liên quan