Bài giảng Phân tích thiết kế thuật toán: Chương 2 - Nguyễn Văn Linh
Số trang: 64
Loại file: ppt
Dung lượng: 1.09 MB
Lượt xem: 23
Lượt tải: 0
Xem trước 7 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Bài giảng "Phân tích thiết kế thuật toán - Chương 2: Sắp xếp" cung cấp các kiến thức giúp người đọc có thể hiểu các giải thuật sắp xếp, vận dụng được giải thuật để minh họa việc sắp xếp, hiểu các lưu đồ của các giải thuật sắp xếp,... Mời các bạn cùng tham khảo.
Nội dung trích xuất từ tài liệu:
Bài giảng Phân tích thiết kế thuật toán: Chương 2 - Nguyễn Văn Linh CHƯƠNG2:SẮPXẾP NguyễnVănLinh KhoaCôngnghệThôngtin&Truyềnthông ĐẠIHỌCCẦNTHƠ nvlinh@ctu.edu.vnNguyễn Văn Linh Mụctiêu Saukhihoàntấtbàihọcnàybạncầnphải: • Hiểucácgiảithuậtsắpxếp. • Vậndụngđượcgiảithuậtđểminhhọaviệc sắpxếp. • Hiểucáclưuđồcủacácgiảithuậtsắpxếp. • Hiểucácchươngtrìnhsắpxếp. • Hiểuđượcviệcđánhgiácácgiảithuật.Nguyễn Văn Linh Tầmquantrọngcủabàitoánsắp xếp • Sắpxếpmộtdanhsáchcácđốitượngtheo mộtthứtựnàođólàmộtbàitoánthường đượcvậndụngtrongcácứngdụngtinhọc. • Sắpxếplàmộtyêucầukhôngthểthiếu trongkhithiếtkếcácphầnmềm. • Dođóviệcnghiêncứucácphươngphápsắp xếplàrấtcầnthiếtđểvậndụngtrongkhi lậptrình.Nguyễn Văn Linh Sắpxếptrongvàsắpxếpngoài• Sắpxếptronglàsựsắpxếpdữliệuđượctổchứctrongbộ nhớtrongcủamáytính.• Cácđốitượngcầnđượcsắpxếplàcácmẩutingồmmộthoặc nhiềutrường.Mộttrongcáctrườngđượcgọilàkhóa(key),kiểu củanólàmộtkiểucóquanhệthứtự(nhưcáckiểusốnguyên,số thực,chuỗikýtự...).• Danhsáchcácđốitượngcầnsắpxếpsẽlàmộtmảngcủacác mẩutinvừanóiởtrên.• Mụcđíchcủaviệcsắpxếplàtổchứclạicácmẩutinsaochocác khóacủachúngđượcsắpthứtựtươngứngvớiquyluậtsắpxếp.• Mộtcáchmặcnhiên,quyluậtsắpxếplàthứtựkhônggiảm.Khi cầnsắpxếptheothứtựkhôngtăngthìphảinóirõ.• Sắpxếpngoàilàsựsắpxếpđượcsửdụngkhisốlượngđối tượngcầnsắpxếplớnkhôngthểlưutrữtrongbộnhớtrongmà phảilưutrữtrênbộnhớngoài. Nguyễn Văn Linh Tổchứcdữliệuvàngônngữcài đặt • Ðểtrìnhbàycácvídụminhhọachúngtasẽ dùngC(TurboC++,Version3.0)làmngôn ngữthểhiệnvàsửdụngkhaibáosau. typedefintkeytype; typedeffloatothertype; typedefstructrecordtype{ keytypekey; othertypeotherfields; };Nguyễn Văn Linh Tổchứcdữliệuvàngônngữcàiđặt(tt) voidSwap(recordtype&x,recordtype&y) { recordtypetemp; temp=x; x=y; y=temp; } • CầnthấyrằngthủtụcSwaplấyO(1)thờigianvì chỉthựchiện3lệnhgánnốitiếpnhau.Nguyễn Văn Linh Giảithuậtsắpxếpchọn(Selection Sort) • Bước0,chọnphầntửcókhóanhỏnhấttrongn phầntửtừa[0]đếna[n1]vàhoánvịnóvớiphần tửa[0]. • Bước1,chọnphầntửcókhóanhỏnhấttrongn1 phầntửtừa[1]đếna[n1]vàhoánvịnóvớia[1]. • Tổngquátởbướcthứi,chọnphầntửcókhoánhỏ nhấttrongniphầntửtừa[i]đếna[n1]vàhoánvị nóvớia[i]. • Saun1bướcnàythìmảngđãđượcsắpxếp.Nguyễn Văn Linh Phươngphápchọnphầntử• Đầutiêntađặtkhoánhỏnhấtlàkhoácủaa[i](lowkey =a[i].key)vàchỉsốcủaphầntửcókhoánhỏnhấtlài (lowindex=i).• Xétcácphầntửa[j](vớijtừi+1đếnn1),nếukhoá củaa[j]nhỏhơnkhoánhỏnhất(a[j].keyn1)thìphầntửcókhoánhỏ nhấtlàa[lowindex].Nguyễn Văn Linh VídụsắpxếpchọnKhóa a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9]BướcBanđầu 5 6 2 2 10 12 9 10 9 3Bước0Bước1Bước2Bước3Bước4Bước5Bước6Bước7Bước8Kếtquả 2 2 3 5 6 9 9 10 10 12 Nguyễn Văn Linh Begin i=0 S i Chương trình sắp xếp chọn a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9]Ban đầu 5 6 2 2 10 12 9 10 9 3Bước 0Bước 1 void SelectionSort(recordtype a[], int n){ int i,j, lowindex; keytype lowkey; /*1*/ for(i=0; i Đánhgiásắpxếpchọn • HàmSwaptốnO(1). • Toànbộchươngtrìnhchỉbaogồmlệnh/*1*/.Lệnh/*1*/ chứacáclệnh“đồngcấp”/*2*/,/*3*/,/*4*/và/*8*/,trong đócáclệnh/*2*/,/*3*/và/*8*/đềutốnthờigianO(1). • Lệnh/*6*/và/*7*/đềutốnO(1)nênlệnh/*5*/tốnO(1). • Vònglặp/*4*/thựchiệnni1lần,vìjchạytừi+1đếnn 1,mỗilầnlấyO(1),nênlấyO(ni1)thờigian. • GọiT(n)là ...
Nội dung trích xuất từ tài liệu:
Bài giảng Phân tích thiết kế thuật toán: Chương 2 - Nguyễn Văn Linh CHƯƠNG2:SẮPXẾP NguyễnVănLinh KhoaCôngnghệThôngtin&Truyềnthông ĐẠIHỌCCẦNTHƠ nvlinh@ctu.edu.vnNguyễn Văn Linh Mụctiêu Saukhihoàntấtbàihọcnàybạncầnphải: • Hiểucácgiảithuậtsắpxếp. • Vậndụngđượcgiảithuậtđểminhhọaviệc sắpxếp. • Hiểucáclưuđồcủacácgiảithuậtsắpxếp. • Hiểucácchươngtrìnhsắpxếp. • Hiểuđượcviệcđánhgiácácgiảithuật.Nguyễn Văn Linh Tầmquantrọngcủabàitoánsắp xếp • Sắpxếpmộtdanhsáchcácđốitượngtheo mộtthứtựnàođólàmộtbàitoánthường đượcvậndụngtrongcácứngdụngtinhọc. • Sắpxếplàmộtyêucầukhôngthểthiếu trongkhithiếtkếcácphầnmềm. • Dođóviệcnghiêncứucácphươngphápsắp xếplàrấtcầnthiếtđểvậndụngtrongkhi lậptrình.Nguyễn Văn Linh Sắpxếptrongvàsắpxếpngoài• Sắpxếptronglàsựsắpxếpdữliệuđượctổchứctrongbộ nhớtrongcủamáytính.• Cácđốitượngcầnđượcsắpxếplàcácmẩutingồmmộthoặc nhiềutrường.Mộttrongcáctrườngđượcgọilàkhóa(key),kiểu củanólàmộtkiểucóquanhệthứtự(nhưcáckiểusốnguyên,số thực,chuỗikýtự...).• Danhsáchcácđốitượngcầnsắpxếpsẽlàmộtmảngcủacác mẩutinvừanóiởtrên.• Mụcđíchcủaviệcsắpxếplàtổchứclạicácmẩutinsaochocác khóacủachúngđượcsắpthứtựtươngứngvớiquyluậtsắpxếp.• Mộtcáchmặcnhiên,quyluậtsắpxếplàthứtựkhônggiảm.Khi cầnsắpxếptheothứtựkhôngtăngthìphảinóirõ.• Sắpxếpngoàilàsựsắpxếpđượcsửdụngkhisốlượngđối tượngcầnsắpxếplớnkhôngthểlưutrữtrongbộnhớtrongmà phảilưutrữtrênbộnhớngoài. Nguyễn Văn Linh Tổchứcdữliệuvàngônngữcài đặt • Ðểtrìnhbàycácvídụminhhọachúngtasẽ dùngC(TurboC++,Version3.0)làmngôn ngữthểhiệnvàsửdụngkhaibáosau. typedefintkeytype; typedeffloatothertype; typedefstructrecordtype{ keytypekey; othertypeotherfields; };Nguyễn Văn Linh Tổchứcdữliệuvàngônngữcàiđặt(tt) voidSwap(recordtype&x,recordtype&y) { recordtypetemp; temp=x; x=y; y=temp; } • CầnthấyrằngthủtụcSwaplấyO(1)thờigianvì chỉthựchiện3lệnhgánnốitiếpnhau.Nguyễn Văn Linh Giảithuậtsắpxếpchọn(Selection Sort) • Bước0,chọnphầntửcókhóanhỏnhấttrongn phầntửtừa[0]đếna[n1]vàhoánvịnóvớiphần tửa[0]. • Bước1,chọnphầntửcókhóanhỏnhấttrongn1 phầntửtừa[1]đếna[n1]vàhoánvịnóvớia[1]. • Tổngquátởbướcthứi,chọnphầntửcókhoánhỏ nhấttrongniphầntửtừa[i]đếna[n1]vàhoánvị nóvớia[i]. • Saun1bướcnàythìmảngđãđượcsắpxếp.Nguyễn Văn Linh Phươngphápchọnphầntử• Đầutiêntađặtkhoánhỏnhấtlàkhoácủaa[i](lowkey =a[i].key)vàchỉsốcủaphầntửcókhoánhỏnhấtlài (lowindex=i).• Xétcácphầntửa[j](vớijtừi+1đếnn1),nếukhoá củaa[j]nhỏhơnkhoánhỏnhất(a[j].keyn1)thìphầntửcókhoánhỏ nhấtlàa[lowindex].Nguyễn Văn Linh VídụsắpxếpchọnKhóa a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9]BướcBanđầu 5 6 2 2 10 12 9 10 9 3Bước0Bước1Bước2Bước3Bước4Bước5Bước6Bước7Bước8Kếtquả 2 2 3 5 6 9 9 10 10 12 Nguyễn Văn Linh Begin i=0 S i Chương trình sắp xếp chọn a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9]Ban đầu 5 6 2 2 10 12 9 10 9 3Bước 0Bước 1 void SelectionSort(recordtype a[], int n){ int i,j, lowindex; keytype lowkey; /*1*/ for(i=0; i Đánhgiásắpxếpchọn • HàmSwaptốnO(1). • Toànbộchươngtrìnhchỉbaogồmlệnh/*1*/.Lệnh/*1*/ chứacáclệnh“đồngcấp”/*2*/,/*3*/,/*4*/và/*8*/,trong đócáclệnh/*2*/,/*3*/và/*8*/đềutốnthờigianO(1). • Lệnh/*6*/và/*7*/đềutốnO(1)nênlệnh/*5*/tốnO(1). • Vònglặp/*4*/thựchiệnni1lần,vìjchạytừi+1đếnn 1,mỗilầnlấyO(1),nênlấyO(ni1)thờigian. • GọiT(n)là ...
Tìm kiếm theo từ khóa liên quan:
Phân tích thiết kế thuật toán Phân tích thuật toán Thiết kế thuật toán Bài giảng Phân tích thiết kế thuật toán Giải thuật sắp xếp Chương trình sắp xếpTài liệu liên quan:
-
Bài giảng chuyên đề Phân tích và thiết kế thuật toán: Chia để trị
27 trang 230 0 0 -
Tiểu luận ngành Khoa học máy tính: Thiết kế và phân tích thuật toán
36 trang 126 0 0 -
Bài giảng Cấu trúc dữ liệu và giải thuật - Chương 4: Một số giải thuật sắp xếp và tìm kiếm
29 trang 122 0 0 -
Bài giảng Phân tích thiết kế thuật toán: Chương 3 - Nguyễn Văn Linh
87 trang 114 0 0 -
Giáo trình Thiết kế và đánh giá thuật toán - Trần Tuấn Minh
122 trang 41 0 0 -
Giáo trình thiết kế và đánh giá thuật toán - Trần Tuấn Minh
122 trang 41 0 0 -
514 trang 37 0 0
-
Thuật toán và Cấu trúc dữ liệu
302 trang 33 0 0 -
Bài giảng Phân tích và thiết kế thuật toán (Phần 1) - ĐH Phương Đông
69 trang 33 0 0 -
Cấu trúc dữ liệu & thuật toán: Phần 2
132 trang 32 0 0