Bài giảng kỹ thuật lập trình chương 3 3 trường đại học ngoại ngữ tin học tp hcm

45 1 0
Bài giảng kỹ thuật lập trình chương 3 3   trường đại học ngoại ngữ   tin học tp hcm

Đ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

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

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

Tài liệu liên quan