intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Lập trình C cơ bản: Tuần 10

Chia sẻ: Cố Dạ Bạch | Ngày: | Loại File: PDF | Số trang:22

2
lượt xem
0
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bài giảng Lập trình C cơ bản: Tuần 10 cung cấp cho sinh viên những nội dung gồm: các giải thuật sắp xếp cơ bản; sắp xếp chèn; sắp xếp lựa chọn; sắp xếp vun đống;... Mời các bạn cùng tham khảo chi tiết nội dung bài giảng!

Chủ đề:
Lưu

Nội dung Text: Bài giảng Lập trình C cơ bản: Tuần 10

  1. C Programming Basic – week 10
  2. Nội dung • Các giải thuật sắp xếp cơ bản – Sắp xếp chèn – Sắp xếp lựa chọn • Sắp xếp vun đống 2
  3. Sắp xếp chèn • Kĩ thuật xếp bài • Quy tắc – Tìm phần tử chưa sắp xếp đầu tiên – Đưa nó đến vị trí đúng – Độ phức tạp: O(n2) 3
  4. Original 23 78 45 8 32 56 8 23 45 78 32 56 Apter List step 3 unsorted sorted unsorted Apter Apter step 1 23 78 45 8 32 56 8 23 32 45 78 56 step 4 sorted unsorted unsorted Apter Apter step 2 23 45 78 8 32 56 8 23 32 45 56 78 step 5 sorted unsorted 4 unsorted
  5. Insertion Sort void insertion_sort(element list[], int n) { int i, j; element next; for (i=1; i=0 && next.key< list[j].key; j--) list[j+1] = list[j]; list[j+1] = next; } } 5
  6. Sắp xếp lựa chọn • Quy tắc – Tìm phần tử bé nhất (lớn nhất) trong danh sách – Đưa nó lên đầu (cuối) danh sách bằng cách đổi chỗ với phần tử đầu (cuối) 6
  7. Selection sort void selection(element a[], int n) { int i, j, min, tmp; for (i = 0; i < n-1; i++){ min = i; for (j = i+1; j
  8. Exercise 10.1 • Xây dựng danh bạ điện thoại • Khai báo cấu trúc với name, phone number, và email • Đọc 10 bản ghi từ tệp vào danh sách, sắp xếp theo thứ tự tăng dần và ghi ra tệp • Sử dụng sắp xếp chèn và sắp xếp lựa chọn • (1) Sử dụng mảng các cấu trúc • (2) Sử dụng danh sách liên kết đơn/đôi • In ra số phép so sánh trong mỗi giải thuật 8
  9. Sắp xếp vun đống • Đống: cây nhị phân – Root chứa giá trị lớn nhất – Cây đầy đủ hoặc gần đầy đủ – Nút cha có giá trị lớn hơn các nút con 9
  10. Sắp xếp vun đống (2) Array interpreted as a binary tree 1 2 3 4 5 6 7 8 9 10 26 5 77 1 61 11 59 15 48 19 [1] 26 input file [2] 5 [3] 77 [4] 1 [5] 61 [6] 11 [7] 59 [8] 15 [9] 48 [10] 19 10
  11. Minh họa [1] 61 [2] 48 [3] 59 [4] 15 [5] 19 [6] 11 [7] 26 [8] 5 [9] 1 [10] 77 (a) [1] 59 [2] 48 [3] 26 [4] 15 [5] 19 [6] 11 [7] 1 [8] 5 [9] 61 [10] 77 (b) 11
  12. Minh họa (2) [1] 48 [2] 19 [3] 26 [4] 15 [5] 5 [6] 11 [7] 1 [8] 59 59 [9] 61 [10] 77 61 (c) [1] 26 [2] 19 [3] 11 48 [4] 15 [5] 5 [6] 1 [7] 48 59 [8] 59 [9] 61 [10] 77 (d) 12
  13. Heap sort void adjust(element list[], int root, int n) { int child, rootkey; element temp; temp=list[root]; rootkey=list[root].key; child=2*root; while (child list[child].key) break; else { list[child/2] = list[child]; child *= 2; i } 2i 2i+1 } list[child/2] = temp; } 13
  14. Heap sort (2) void heapsort(element list[], int n) { ascending order (max heap) int i, j; element temp; bottom-up for (i=n/2; i>0; i--) adjust(list, i, n); n-1 cylces for (i=n-1; i>0; i--) { top-down SWAP(list[1], list[i+1], temp); adjust(list, 1, i); } } 14
  15. Minh họa Max heap following first for loop of heapsort initial heap [1] 77 [2] 61 [3] 59 exchange [4] 48 [5] 19 [6] 11 [7] 26 [8] 15 [9] 1 [10] 5 15
  16. Exercise 10.2 • Xây dựng danh bạ điện thoại • Viết chương trình có thể lưu trữ 100 cấu trúc chứa name, phone number, và email • Đọc 10 bản ghi từ tệp, sắp xếp theo thứ tự tăng dần và in ra tệp • Sử dụng sắp xếp vun đống. In ra số phép so sánh 16
  17. Exercise 10.3 • Viết chương trình tạo một mảng ngẫu nhiên gồm 500 phần tử. • Sắp xếp sử dụng sắp xếp chèn và sắp xếp vun đống. Tính thời gian thực hiện trong mỗi trường hợp và in ra kết quả. 17
  18. Gợi ý • Hàm sinh số ngẫu nhiên srand(time(NULL))và rand() • Hàm thời gian #include time_t t1,t2; time(&t1); /* Do something */ time(&t2); durationinseconds = (int) t2 –t1; 18
  19. Exercise 10.4 • Nhập 10 từ từ bàn phím • Với mỗi từ: – Lưu vào một mảng kí tự – Sắp xếp mảng bằng sắp xếp chèn và in kết quả ra màn hình 19
  20. Gợi ý • Giải thuật: – 1. Khai báo char data[10]. – 2. Đọc từ bằng hàm fgetc( ) vừa lưu vào mảng data – 3. Sắp xếp mảng data – 4. In ra màn hình bằng hàm fputc( ) 20
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2