Mảng và xâu ký tự

Chia sẻ: Thanhtung Vo | Ngày: | Loại File: PPT | Số trang:39

1
235
lượt xem
95
download

Mảng và xâu ký tự

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Tập các phần tử thuộc cùng một kiểu dữ liệu, Được sắp xếp liên tục trong bộ nhớ kích thước là cố định Có thể đánh chỉ số và truy cập theo thứ tự ngẫu nhiên C/C++: chỉ số luôn bắt đầu từ 0. Có thể truyền mảng là tham số cho một hàm, Như là tham số biến, Hàm cần phải biết kích thước của mảng thông qua một tham số phụ thông qua giá trị kết thúc mảng.

Chủ đề:
Lưu

Nội dung Text: Mảng và xâu ký tự

  1. Mảng và xâu ký tự
  2. Nội dung  Mảng  khai báo  cấu trúc, thao tác  Xâu ký tự  tạoxâu, nhập, xuất  một số hàm xâu  Một số thuật toán sắp xếp và tìm kiếm Nguyễn Việt Hà Mảng và xâu 2
  3. Tài liệu tham khảo  C++ How to program, Chapter 7  The C programming language, Chap. 1.6, 1.9, Chap. 5 Nguyễn Việt Hà Mảng và xâu 3
  4. Mảng  Tập các phần tử thuộc cùng một kiểu dữ liệu  Được sắp xếp liên tục trong bộ nhớ  kích thước là cố định  Có thể đánh chỉ số và truy cập theo thứ tự ngẫu nhiên  C/C++: chỉ số luôn bắt đầu từ 0 Nguyễn Việt Hà Mảng và xâu 4
  5. Ví dụ int main() { int c[12]; for (int i=0; i> c[i]; } } Nguyễn Việt Hà Mảng và xâu 5
  6. Nguyễn Việt Hà Mảng và xâu 6
  7. Khai báo mảng int main() { int a[12]; int b[] = {2, 3, 5, 7}; int c[5] = {2, 4, 8, 16}; int d[2] = {1, 2, 3}; // compile error int m[5], i; … } Nguyễn Việt Hà Mảng và xâu 7
  8. Kích thước mảng không cần biết trước int main() { int n, max = 0; cin >> n; int a[n]; for (int i=0; i> a[i]; if (a[max] < a[i]) max = i; } if (n > 0) cout
  9. Mảng là tham số  Có thể truyền mảng là tham số cho một hàm  Như là tham số biến  Hàm cần phải biết kích thước của mảng  thông qua một tham số phụ  thông qua giá trị kết thúc mảng Nguyễn Việt Hà Mảng và xâu 9
  10. Ví dụ: copy mảng void arrayCopy(int a[], int b[], int size) { for (int i=0; i
  11. int linearSearch(int, int [], int); int main() { int a[100], key; … cin >> key; cout
  12. Bài tập  Viết các hàm tính giá trị lớn nhất, giá trị nhỏ nhất, giá trị trung bình của một mảng số nguyên. Nguyễn Việt Hà Mảng và xâu 12
  13. Mảng nhiều chiều int a[8][8]; int b[2][3] = { {1, 2, 4}, {2, 3, 5} }; for (int i=0; i
  14. Sắp xếp và tìm kiếm  Một trong các công việc chính của các HTTT  Sắp xếp để tìm kiếm hiệu quả, vd. từ điển  Sắp xếp  đổichỗ các phần tử tạo ra một mảng có thứ tự  sắp xếp chọn, chèn, nổi bọt, nhanh, trộn,…  Tìm kiếm  tìmkiếm nhị phân (binary search)  sử dụng thuật toán băm (hashing) Nguyễn Việt Hà Mảng và xâu 14
  15. Sắp xếp chọn (selection sort)  Tìm (chọn) phần tử nhỏ nhất, đổi lên vị trí đầu tiên  Trong số phần tử còn lại, tìm phần tử nhỏ nhất, đổi lên vị trí thứ 2  Lặp lại cho đến hết Nguyễn Việt Hà Mảng và xâu 15
  16. 6 8 7 5 2 1 4 3 1 8 7 5 2 6 4 3 1 2 7 5 8 6 4 3 1 2 3 5 8 6 4 7 1 2 3 4 8 6 5 7 1 2 3 4 5 6 8 7 1 2 3 4 5 6 8 7 1 2 3 4 5 6 7 8 Nguyễn Việt Hà Mảng và xâu 16
  17. Sắp xếp chọn: void selectionSort(int a[], int size) { int i, j, k, tmp; for (i=0; i
  18. Sắp xếp chèn (insertion sort)  Giả sử dãy k phần tử đầu đã sắp xếp  dãy 1 phần tử đầu tiên hiển nhiên là đã có thứ tự  Xét phần tử tiếp theo, tìm cách chèn nó vào vị trí thích hợp (dịch chuyển các phần tử lớn hơn lùi lại một vị trí)  Như vậy k+1 phần tử đã có thứ tự, xét tiếp phần tử tiếp theo,… Nguyễn Việt Hà Mảng và xâu 18
  19. 6 8 7 5 2 1 4 3 6 8 7 5 2 1 4 3 6 8 7 5 2 1 4 3 6 8 5 2 1 4 3 6 8 5 2 1 4 3 6 7 8 5 2 1 4 3 6 7 8 5 2 1 4 3 6 7 8 2 1 4 3 6 7 8 2 1 4 3 5 6 7 8 2 1 4 3 Nguyễn Việt Hà Mảng và xâu 19
  20. Sắp xếp nổi bọt (bubble sort) Tuần tự xét các phần tử từ 2 đến n, đối với phần tử thứ k:  So sánh nó với phần tử trước đó, nếu nó nhỏ hơn thì đổi chỗ, cứ như vậy đến khi phần tử này không đổi chỗ được nữa (không nổi lên được nữa). Nguyễn Việt Hà Mảng và xâu 20
Đồng bộ tài khoản