Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 140 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
140
Dung lượng
1,98 MB
Nội dung
CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT TS.Phan Thị Hà Học Viện CNBCVT Phan Thị Hà BT kiểm tra kiến thức LT Viết chƣơng trình tính tổng số nguyên tố ma trận số nguyên Biết ct gồm có hàm sau: Void Nhập( int **a, int n); nhập ma trận int ngt( int so): Xác định so có phải ng tố k? Int Tong( int ** a, int n): Tính tổng số nguyên tố theo yêu cầu đầu Voi nhap( int a[][10], int n) Int Tong( int a[][10], int n) Int Main() Phan Thị Hà Danh sách nhóm trƣởng Nhóm 4: Bùi Thành Lộc 01663177081 mrkasa1201@gmail.com Phan Văn Quang 0988806405 buinhulac110i@gmail.com Nhóm 5: Trần Quang Hồn 0919963616 Tranhoanhq@gmail.com Đặng thị Ngọc Trâm0915365653 ngoctramnd2013@gmail.com Nhóm 7: Phan Văn Trung 0943241608 trungphanptit@gmail.com Phạm Quang Sơn 0964535086 quángon137@gmail.com Nhóm 8: Bùi Văn Cơng 0978776096 conghcl2010@gmail.com Nguyễn Mạnh Tồn 01677535717 nguyenmanhtoan1501@gmail.com Nhóm 9: Nghuyễn Thanh Tuấn 01685155229 thanh.tuan.1995.0411@gmail.com.vn Đào Bá Huỳnh 0974021385 boy.sl.pro.1994@gmail.com Nhóm 10: Nguyễn Văn Tiến 0966626212 nvtien94@gmail.com Trần Lƣơng Bằng 0975453108 Phan Thị Hà Nội dung Chƣơng 1: Phân tích – Thiết kế giải thuật Chƣơng 2: Đệ Quy Chƣơng 3: Mảng Danh sách liên kết Chƣơng 4: Ngăn xếp Hàng đợi Chƣơng 5: Cấu trúc liệu kiểu Chƣơng 6: Đồ thị Chƣơng 7: Sắp xếp tìm kiếm Phan Thị Hà CHƢƠNG 1: PHÂN TÍCH – THIẾT KẾ GIẢI THUẬT Phan Thị Hà Giải thuật gì? Giải thuật – hay thuật toán Thuật toán chuỗi hữu hạn lệnh Mỗi lệnh có ngữ nghĩa rõ ràng thực với lượng hữu hạn tài nguyên khoảng hữu hạn thời gian Tính chất thuật tốn: Xác định rõ đầu vào, đầu Hữu hạn Chính xác Tổng qt Phan Thị Hà Ngơn ngữ diễn đạt giải thuật Ngôn ngữ tự nhiện Sơ đồ khối Giả mã Vd Phan Thị Hà Phân tích thuật tốn Nhiệm vụ: Phân tích – tính tốn thời gian thực chƣơng trình Phan Thị Hà Phân tích thuật tốn Định nghĩa Cho hàm f g hàm thực khơng âm có miền xác định tập số tự nhiên Ta viết f(n)=O(g(n)) (đọc f(n) O lớn g(n)) tồn số C>0 số tự nhiên n0 cho f(n)n0 Nếu thuật tốn có thời gian thực T(n)=O(g(n)) ta nói thuật tốn có thời gian thực cấp cao g(n) Đơi ta nói đơn giản thuật tốn có thời gian thực cấp g(n) hay độ phức tạp tính tốn thuật tốn g(n) Ngƣời ta thƣờng nói đến độ phức tạp tính tốn thuật tốn trƣờng hợp xấu nhất, trƣờng hợp tốt nhất, độ phức tạp trung bình Phan Thị Hà Các quy tắc để đánh giá thời gian thực thuật toán Nếu T1(n) = O(f(n)), T2(n) = O(g(n)), Qui tắc tổng: T1(n)+ T2(n) = O(max(f(n),g(n))) Quy tắc nhân: T1(n)T2(n) = O(f(n)g(n)) Phan Thị Hà QUICK SORT Độ phức tạp tính tốn: Thời gian thực thuật toán trƣờng hợp xấu khoảng N2/2, có nghĩa O(N2) Trong trƣờng hợp tốt nhất, lần phân chia đƣợc nửa dãy nhau, thời gian thực thuật tốn T(N) đƣợc tính là: T(N) = 2T(N/2) + N Khi đó, T(N) ≈ NlogN Trong trƣờng hợp trung bình, thuật tốn có độ phức tạp khoảng 2NlogN = O(NlogN) Phan Thị Hà HEAP SORT Heap sort giải thuật đảm bảo kể trƣờng hợp xấu thời gian thực thuật tốn O(NlogN) Ý tƣởng giải thuật thực xếp thông qua việc tạo heap, heap nhị phân hồn chỉnh có tính chất khóa nút cha lớn khóa nút Việc thực giải thuật đƣợc chia làm giai đoạn GĐ1: Tạo heap từ dãy ban đầu Theo định nghĩa heap nút cha lớn nút con=> nút gốc heap phần tử lớn GĐ2 : Sắp dãy dựa heap tạo đƣợc Do nút gốc nút lớn nên đƣợc chuyển vị trí cuối dãy phần tử cuối đƣợc thay vào gốc heap Khi ta có mới, khơng phải heap, với số nút đƣợc bớt Lại chuyển heap lặp lại trình heap nút Đó phần tử bé dãy đƣợc đặt lên đầu Phan Thị Hà Với heap ban đầu có phần tử phần tử dãy, ta lần lƣợt lấy phần tử dãy chèn vào heap tạo đƣợc heap gồm toàn n phần tử Phan Thị Hà Phan Thị Hà Phan Thị Hà Chèn phần tử x vào heap có k phần tử, ta gán phần tử thứ k +1, a[k], x, gọi thủ tục upheap(k) void upheap(int m){ int x; x=a[m]; while ((a[(m-1)/2]0)){ a[m]=a[(m-1)/2]; m=(m-1)/2; } a[m]=x; } void insert_heap(int x){ a[m]=x; upheap(m); m++; } Phan Thị Hà Ta có thủ tục downheap để chỉnh lại heap nút k không thoả mãn định nghĩa heap : void downheap(int k){ int j, x; x=a[k]; while (k