Thông tin tài liệu
KỸ THUẬT LẬP TRÌNH CƠ BẢN Khoa Cơng nghệ thơng tin Trường Đại học Ngoại ngữ - Tin học TP.HCM (HUFLIT) KỸ THUẬT SẮP XẾP Sắp xếp • Sắp xếp (sorting): xếp tiến trình xếp lại liệu theo thứ tự • Ví dụ 2 1, a 4,b 3,c 2,d 1,a 2,d 3,c 4,b Key • Khóa (key): • Một liệu (trong danh sách liệu) có nhiều fields • Field (có thể vài fields) dùng để xếp gọi khóa (key) Sắp xếp • Chúng ta xếp • Các số (numbers) • Các từ, chuỗi (words) • Các cặp (pairs) giá trị • Thứ tự xếp sử dụng nhiều • Sắp xếp số theo thứ tự • Sắp xếp chuỗi theo thứ tự alphabet (thứ tự từ điển) • Chúng ta xét hình thức đơn giản nhất: xếp dãy số nguyên Sắp xếp • Bài tốn xếp • Cho mảng có 𝑛 số nguyên:𝑎 = (𝑎1 , 𝑎2 , … , 𝑎𝑛 ) Hãy xếp phần tử theo thứ tự tăng dần 𝑎1 ≤ 𝑎2 ≤ ⋯ ≤ 𝑎𝑛 • Mảng trước xếp 4 • Mảng xếp Sắp xếp • Tại phải xếp liệu? • Giúp tìm kiếm (search) nhanh • Giúp trộn (merge) danh sách với nhanh • Sorting coi cơng cụ thiết kế thuật tốn Thuật tốn xếp • Các lớp thuật tốn xếp (tùy đặc điểm liệu) • Thuật tốn 𝑂 𝑛2 • Thuật tốn 𝑂 𝑛 log 𝑛 • Thuật toán 𝑂 𝑛 • Ba thuật toán • Interchange sort/Selection sort: 𝑂(𝑛2 ) • Quick sort (sắp xếp nhanh): 𝑂(𝑛 log 𝑛) • Counting sort/Distribution sort: 𝑂(𝑛) Interchange sort • Ý tưởng interchange sort • Xét phần tử 𝑎𝑖 từ trái sang phải • Với phần tử 𝑎𝑖 , so sánh 𝑎𝑖 với phần tử 𝑎𝑗 đứng sau 𝑎𝑖 • Nếu 𝑎𝑖 > 𝑎𝑗 Hốn vị 𝑎𝑖 với 𝑎𝑗 Interchange sort • Interchange sort • Lần lặp 1 4 9 9 Interchange sort • Interchange sort • Lần lặp 9 10 Counting sort • Điều kiện sử dụng Counting sort • Key dùng để xếp số nguyên • Miền giá trị key nhỏ (thường ≤ 106 ) • Miền giá trị key nhỏ số lượng phần tử 𝑛 31 Counting sort • Độ phức tạp thuật tốn: 𝑂(𝑛) • Ưu điểm • Thuật tốn Counting sort thuật toán chạy nhanh thuật toán xếp • Khuyết điểm • Áp dụng cho dãy đặc biệt tức phần tử dãy số nguyên có miền giá trị từ đến K (𝑲 ≤ 𝟏𝟎𝟔 ) • Việc chọn lựa thuật tốn xếp nào? Dựa vào • Số phần tử 𝑛 dãy • Giá trị khóa số ngun hay số thực • Miền giá trị khóa 32 KỸ THUẬT TÌM KIẾM Search • Bài tốn • Cho dãy phần tử𝑎 = (𝑎1 , 𝑎2 , … , 𝑎𝑛 ) Hãy tìm phần tử hay phần tử thỏa điều kiện 𝐶 cho trước • Điều kiện 𝐶 • Giá trị lớn nhất, giá trị nhỏ • Bằng giá trị 𝑥 cho trước • Là số nguyên tố • … 𝑎= 54 26 24 50 12 13 18 10 55 𝑥 = 13 34 Search • Một số loại thuật tốn tìm kiếm • Linear search 𝑶(𝒏) • Binary search 𝑶 𝐥𝐨𝐠 𝒏 • Ternary search 𝑂(log 𝑛) • Exponential search 𝑂(log 𝑛) • Jump search 𝑂( 𝑛) • Breath First Search (BFS), Depth First Search (DFS) • • Hashing 𝑂(1) 35 Linear search • Phương pháp Linear search • Lần lược xét phần tử theo trật tự (từ trái sang phải hay từ phải sang trái, …) • Với phần tử 𝑎𝑖 kiểm tra với điều kiện 𝐶 Nếu thỏa mãn điều kiện • Lưu số phần tử chương trình (Tìm phần tử) • Lưu số phần tử, tiếp tục tìm kiếm (Tìm tất phần tử) 54 26 24 50 12 13 18 10 55 Bắt đầu 36 Linear search • Chương trình Tìm phần tử int LinearSearch(int[] a) { int index=-1; for (int i=0; i
Ngày đăng: 21/07/2023, 16:51
Xem thêm: