Tải bản đầy đủ (.pptx) (386 trang)

C12-Danhsach doc

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3.34 MB, 386 trang )

Dãy – Danh sách
Tài liệu tham khảo
6/27/14Nh p môn CTDL và thu t toánậ ậ2

Bài gi ng CTDL, Nguy n Thanh S n, ĐH KHTN TPHCMả ễ ơ

Bài gi ng CTDL, Bùi Hoài Th ng, ĐH Bách Khoa TPHCMả ắ

Bài gi ng CTDL, Nguy n Vi t Anh, ĐH Công ngh HNả ễ ệ ệ

Bài gi ng CTDL, Ph m Th B o, ĐH KHTN TPHCMả ạ ế ả

…………
Nội dung
6/27/14Nh p môn CTDL và thu t toánậ ậ3

Dãy

Đ nh ngh a, khai báoị ĩ

Các thao tác

Tìm ki m và s p x pế ắ ế

Danh sách

Đ nh ngh a, khai báoị ĩ

Các lo i danh sáchạ

Các thao tác


Định nghĩa Danh sách(List)
6/27/14Nh p môn CTDL và thu t toánậ ậ4

Danh sách bao g m m t s bi n đ ng các ph n t có ki u d li u xác đ nh.ồ ộ ố ế ộ ầ ử ể ữ ệ ị

S ph n t c a danh sách g i là chi u dài c a danh sáchố ầ ử ủ ọ ề ủ
Danh sách – Ví dụ
6/27/14Nh p mơn CTDL và thu t tốnậ ậ5

Ví d : Hồ sơ các học sinh của một trường được tổ chức thành danh sách gồm nhiều hồ sơ của từng học ụ
sinh; số lượng học sinh trong trường có thể thay đổi do vậy cần có các thao tác thêm, hủy một hồ sơ; để
phục vụ công tác giáo vụ cần thực hiện các thao tác tìm hồ sơ của một học sinh, in danh sách hồ sơ
Các phép toán trên danh sách
6/27/14Nh p môn CTDL và thu t toánậ ậ6

T o m i 1 danh sáchạ ớ

Thêm 1 ph n tầ ử

Tìm ki m 1 ph n tế ầ ử

Duy t danh sáchệ

Lo i b 1 ph n tạ ỏ ầ ử

S a đ i giá tr 1 ph n tử ổ ị ầ ử

S p th tắ ứ ự

Tách 1 danh sách thành nhi u danh sáchề


Ghép nhi u danh sách thành 1 danh sáchề

Sao chép 1 danh sách

H y 1 danh sáchủ

……………
Phân cấp đặc biệt hoá
6/27/14Nh p môn CTDL và thu t toánậ ậ7
List
tuần tự
First()=pos Value(pos)=item Kth(integer)=item
Next(pos)=pos Length()=integer SetKth(item,integer)
Insert(item,pos) Delete(pos) Find(item)=position
Stack
LIFO
Push(item)
Pop()=item
IsEmpty()=true/false
Queue
FIFO
Enqueue(item)
Dequeue()=item
IsEmpty()=true/false
Vector
ngẫu nhiên
Kth(int) = item
SetKth(item,integer)
Danh sách – cài đặt

6/27/14Nh p môn CTDL và thu t toánậ ậ8

Ki u k ti p: danh sách kể ế ế ề

Ki u liên k t: danh sách liên k tể ế ế
Phân cấp cài đặt
6/27/14Nh p môn CTDL và thu t toánậ ậ9
List
First()=pos Value(pos)=item Kth(integer)=item
Next(pos)=pos Length()=integer SetKth(item,integer)
Insert(item,pos) Delete(pos) Find(item)=position
Linked List Array
Danh sách kề – Cài đặt trên cơ sở mảng
6/27/14Nh p môn CTDL và thu t toánậ ậ10

Max chi u dài t i đa c a danh sáchề ố ủ

Xây d ng c u trúc List g m 2 thành ph n ự ấ ồ ầ

data là m t m ng các ph n t thu c ki u d li u itemộ ả ầ ử ộ ể ữ ệ

count l u ch s c a thành ph n m ng l u gi ph n t cu i cùng c a danh sáchư ỉ ố ủ ầ ả ư ữ ầ ử ố ủ
Dãy – Danh sách
6/27/14Nh p môn CTDL và thu t toánậ ậ11
typedef struct List
{
<kieu du lieu> data[max];
int spt;
}
Sắp xếp

Ph m Thi V ngạ ươ12

Cho t p N ph n t có m thu c tính, đ c bi u di n d i d ng b n ghi.ậ ầ ử ộ ượ ể ễ ướ ạ ả

D a vào 1 (ho c vài) thu c tính đ s p x p các ph n t theo tr t t m iự ặ ộ ể ắ ế ầ ử ậ ự ớ
Sắp xếp
Ph m Thi V ngạ ươ13

G m 2 bài toán con:ồ

D a theo khoá s p x p ự ắ ế đ nh vị ị l i th t b n ghiạ ứ ự ả

Chuy n các b n ghi v v trí m i.ể ả ề ị ớ

Hai thao tác c b nơ ả

So sánh

Gán
Các thuật toán sắp xếp
Ph m Thi V ngạ ươ14
1. Đ i ch tr c ti p – Interchange Sortổ ỗ ự ế
2. N i b t – Bubble Sortổ ọ
3.
Shaker Sort
4. Chèn tr c ti p – Insertion Sortự ế
5.
Chèn nh phân – Binary Insertion Sortị
6. Shell Sort
7. Ch n tr c ti p – Selection Sortọ ự ế

8. Quick Sort
9. Merge Sort
10. Heap Sort
11. Radix Sort
Các thuật toán sắp xếp
Ph m Thi V ngạ ươ15
1. Đ i ch tr c ti p – Interchange Sortổ ỗ ự ế
2. N i b t – Bubble Sortổ ọ
3. Shaker Sort
4. Chèn tr c ti p – Insertion Sortự ế
5. Chèn nh phân – Binary Insertion Sortị
6. Shell Sort
7. Ch n tr c ti p – Selection Sortọ ự ế
8. Quick Sort
9. Merge Sort
10. Heap Sort
11. Radix Sort
Đổi chỗ trực tiếp – Interchange Sort
Ph m Thi V ngạ ươ16

Khái ni m ngh ch th :ệ ị ế


Xét m t m ng các s aộ ả ố
0
, a
1
, . a
n
.


N u có ế i<j và a
i
> a
j
, thì ta g i đó là m t ngh ch th .ọ ộ ị ế

M ng ch a s p x p s có ngh ch th ả ư ắ ế ẽ ị ế

M ng đã có th t s không ch a ngh ch th ả ứ ự ẽ ứ ị ế
Đổi chỗ trực tiếp – Interchange Sort
Ph m Thi V ngạ ươ17

Tìm t t c ngh ch th , tri t tiêu chúng b ng cách hoán v 2 ph n t t ng ng trong ngh ch th ấ ả ị ế ệ ằ ị ầ ử ươ ứ ị ế
Đổi chỗ trực tiếp – Interchange Sort
Ph m Thi V ngạ ươ18

B c 1ướ : i = 1;// b t đ u t đ u dãy ắ ầ ừ ầ

B c 2ướ : j = i+1;//tìm các ph n t a[j] < a[i], j>i ầ ử

B c 3ướ :
Trong khi j < N th c hi n ự ệ
N u a[j]<a[i] ế
//xét c p a[i], a[j]ặ

Doicho(a[i],a[j]);
j = j+1;

B c 4ướ : i = i+1;

N u i < n: L p l i B c 2. ế ặ ạ ướ
Ng c l i: D ng. ượ ạ ừ
Đổi chỗ trực tiếp – Interchange Sort
Ph m Thi V ngạ ươ19

Cho dãy s a: U ố
12 2 8 5 1 6 4 15
Đổi chỗ trực tiếp – Interchange Sort
Ph m Thi V ngạ ươ20
Đổi chỗ trực tiếp – Interchange Sort
Ph m Thi V ngạ ươ21
Đổi chỗ trực tiếp – Interchange Sort
Ph m Thi V ngạ ươ22
Đổi chỗ trực tiếp – Interchange Sort
Ph m Thi V ngạ ươ23
Đổi chỗ trực tiếp – Interchange Sort
Ph m Thi V ngạ ươ24
Đổi chỗ trực tiếp – Interchange Sort
Ph m Thi V ngạ ươ25

void InterchangeSort(int a[], int N )
{
int i, j;
for (i = 0 ; i<N-1 ; i++)
for (j =i+1; j < N ; j++)
if(a[j ]< a[i])
// n u có s sai v trí thì đ i chế ự ị ổ ỗ
Doicho(a[i],a[j]);
}

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×