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
lượt xem 6
download
Bài giảng Kỹ thuật lập trình: Chương 3.3 cung cấp cho người đọc những kiến thức như: Kỹ thuật sắp xếp; Thuật toán sắp xếp; kỹ thuật tìm kiếm;...Mời các bạn cùng tham khảo!
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: 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
- 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): sắp xếp là tiến trình sắp xếp lại dữ liệu theo thứ tự nào đó • Ví dụ 1 4 3 2 1 2 3 4 1, a 4,b 3,c 2,d 1,a 2,d 3,c 4,b Key • Khóa (key): • Một dữ liệu (trong danh sách dữ liệu) có thể có nhiều fields. • Field (có thể vài fields) dùng để sắp xếp gọi là khóa (key) 3
- Sắp xếp • Chúng ta có thể sắp xếp • Các số (numbers) • Các từ, các chuỗi (words) • Các cặp (pairs) giá trị • Thứ tự sắp xếp được sử dụng nhiều nhất • Sắp xếp các số theo thứ tự • Sắp xếp các 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: sắp xếp dãy số nguyên 4
- Sắp xếp • Bài toán sắp xếp • Cho mảng có 𝑛 số nguyên:𝑎 = (𝑎1 , 𝑎2 , … , 𝑎 𝑛 ). Hãy sắp xếp các phần tử theo thứ tự tăng dần 𝑎1 ≤ 𝑎2 ≤ ⋯ ≤ 𝑎 𝑛 • Mảng trước khi sắp xếp 1 4 3 2 8 9 4 6 • Mảng đã được sắp xếp 1 2 3 4 4 6 8 9 5
- Sắp xếp • Tại sao phải sắp xếp dữ liệu? • Giúp tìm kiếm (search) nhanh hơn • Giúp trộn (merge) các danh sách với nhau nhanh hơn • Sorting có thể coi như là công cụ thiết kế thuật toán 6
- Thuật toán sắp xếp • Các lớp thuật toán sắp xếp (tùy đặc điểm dữ liệu) • Thuật toán 𝑂 𝑛2 • Thuật toán 𝑂 𝑛. log 𝑛 • Thuật toán 𝑂 𝑛 • Ba thuật toán cơ bản • Interchange sort/Selection sort: 𝑂(𝑛2 ) • Quick sort (sắp xếp nhanh): 𝑂(𝑛. log 𝑛) • Counting sort/Distribution sort: 𝑂(𝑛) 7
- Interchange sort • Ý tưởng interchange sort • Xét từng phần tử 𝑎 𝑖 từ trái sang phải • Với phần tử 𝑎 𝑖 , so sánh 𝑎 𝑖 với các phần tử 𝑎 𝑗 đứng sau 𝑎 𝑖 • Nếu 𝑎 𝑖 > 𝑎 𝑗 thì Hoán vị 𝑎 𝑖 với 𝑎 𝑗 8
- Interchange sort • Interchange sort • Lần lặp 1 1 2 3 4 4 6 8 9 1 4 3 2 8 9 4 6 1 4 3 2 8 9 4 6 9
- Interchange sort • Interchange sort • Lần lặp 2 1 4 3 2 8 9 4 6 1 4 3 2 8 9 4 6 10
- Interchange sort • Interchange sort • Lần lặp 2 1 4 3 2 8 9 4 6 1 3 4 2 8 9 4 6 1 2 4 3 8 9 4 6 1 2 4 3 8 9 4 6 11
- Interchange sort • Interchange sort • Lần lặp 3 1 2 4 3 8 9 4 6 1 2 4 3 8 9 4 6 12
- Interchange sort • Interchange sort • Lần lặp 3 1 2 4 3 8 9 4 6 1 2 3 4 8 9 4 6 13
- Interchange sort • Interchange sort • Lần lặp 4 1 2 3 4 8 9 4 6 1 2 3 4 8 9 4 6 1 2 3 4 8 9 4 6 14
- Interchange sort • Interchange sort • Lần lặp 5 1 2 3 4 8 9 4 6 1 2 3 4 8 9 4 6 1 2 3 4 8 9 4 6 1 2 3 4 4 9 8 6 1 2 3 4 4 9 8 6 15
- Interchange sort • Interchange sort • Lần lặp 6 1 2 3 4 4 9 8 6 1 2 3 4 4 9 8 6 16
- Interchange sort • Interchange sort • Lần lặp 6 1 2 3 4 4 9 8 6 1 2 3 4 4 9 8 6 1 2 3 4 4 8 9 6 1 2 3 4 4 6 9 8 17
- Interchange sort • Interchange sort • Lần lặp 7 1 2 3 4 4 6 9 8 1 2 3 4 4 6 9 8 1 2 3 4 4 6 8 9 18
- Interchange sort • Chương trình void InterchangeSort(int[] a) { for (int i=0; i
- Interchange sort • Ưu điểm • Cài đặt nhanh • Cài đặt ít lỗi • Khuyết điểm • Chạy chậm khi số phần tử lớn • Khi nào nên sử dụng? • Thuật toán sắp xếp Đổi chổ được dùng khi kích thước dữ liệu nhỏ (𝑛 ≤ 5000) 20
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Kỹ thuật lập trình: Chương 1 - Trần Quang
39 p | 11 | 2
-
Bài giảng Kỹ thuật lập trình: Chương 9 - Trần Quang
33 p | 6 | 2
-
Bài giảng Kỹ thuật lập trình: Chương 8 - Trần Quang
34 p | 9 | 2
-
Bài giảng Kỹ thuật lập trình: Chương 7 - Trần Quang
28 p | 11 | 2
-
Bài giảng Kỹ thuật lập trình: Chương 6 - Trần Quang
37 p | 13 | 2
-
Bài giảng Kỹ thuật lập trình: Chương 4 - Trần Quang
32 p | 8 | 2
-
Bài giảng Kỹ thuật lập trình: Chương 3 - Trần Quang
52 p | 11 | 2
-
Bài giảng Kỹ thuật lập trình: Chương 2 - Trần Quang
25 p | 12 | 2
-
Bài giảng Kỹ thuật lập trình: Hàm nâng cao (Phần 1) - ThS. Đặng Bình Phương
26 p | 0 | 0
-
Bài giảng Kỹ thuật lập trình: Các kỹ thuật thao tác trên bit - ThS. Đặng Bình Phương
29 p | 3 | 0
-
Bài giảng Kỹ thuật lập trình: Kỹ thuật lập trình đệ quy - ThS. Đặng Bình Phương
44 p | 3 | 0
-
Bài giảng Kỹ thuật lập trình: Dữ liệu kiểu cấu trúc - ThS. Đặng Bình Phương
33 p | 2 | 0
-
Bài giảng Kỹ thuật lập trình: Chuỗi ký tự - ThS. Đặng Bình Phương
20 p | 4 | 0
-
Bài giảng Kỹ thuật lập trình: Chuyển đổi kiểu dữ liệu và cấp phát bộ nhớ động - ThS. Đặng Bình Phương
28 p | 4 | 0
-
Bài giảng Kỹ thuật lập trình: Dữ liệu kiểu con trỏ (Nâng cao) - ThS. Đặng Bình Phương
48 p | 1 | 0
-
Bài giảng Kỹ thuật lập trình: Dữ liệu kiểu con trỏ (Cơ bản) - ThS. Đặng Bình Phương
40 p | 1 | 0
-
Bài giảng Kỹ thuật lập trình: Giới thiệu môn học - ThS. Đặng Bình Phương
7 p | 2 | 0
-
Bài giảng Kỹ thuật lập trình: Hàm nâng cao (Phần 2) - ThS. Đặng Bình Phương
30 p | 0 | 0
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn