Bài giảng Cấu trúc dữ liệu - Chương 5: Sắp xếp
Số trang: 29
Loại file: ppt
Dung lượng: 408.50 KB
Lượt xem: 6
Lượt tải: 0
Xem trước 3 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Phương pháp chọn, phương pháp chèn, phương pháp chèn nhị phân, phương pháp nổi bọt, phương pháp sắp xếp nhanh, phương pháp vun đống là những nội dung chính trong "Bài giảng Cấu trúc dữ liệu - Chương 5: Sắp xếp". Mời các bạn cùng tham khảo nội dung chi tiết.
Nội dung trích xuất từ tài liệu:
Bài giảng Cấu trúc dữ liệu - Chương 5: Sắp xếpCHƯƠNG5SẮP XẾP 1 Chương5:Sắpxếp5.1Phươngphápchọn5.2Phươngphápchèn5.3Phươngphápchènnhịphân5.4Phươngphápnổibọt5.5Phươngphápsắpxếpnhanh5.6Phươngphápvunđống 24.1bàitoánsắpxếp ̣ ̣ Cómôttâpnđô ́itượng.Mỗiđốitượngcónhiềuthuôcti ̣ ́nh,đượcthêhiên ̉ ̣ ̣ ̉ ̉bằngmôtkiêubanghigô ̀mnhiềutrường.Sắpxếplàquátrìnhbốtrílạicácbảnghitheomộttrườnggoila ̣ ̀khóa. Vídụtrongbảngdanhbạgồmcácbảnghicótêncơquan,địachỉ,sốđiệnthoại.Sổdanhbạthườngđượcsắpxếptheotrườngkhóalàtêncơquanđểdễtìmkiếm. 34.1bàitoánsắpxếp Sắpxếplàthaotáccầnthiếthaygặptrongquátrìnhlưutrữvàquảnlýdữliệu.Có2phươngphápsắpxếp:sắpxếptrongtácđộnglêncácbảnghilưutrữởbộnhớtrongvàSắpxếpngoàiliênquanđếntậplớncácbảnghilưutrữtrêntệp.Chươngnàychỉxétbàitoánsắpxếptrongtheothứtựtăngcủakhóa.Sắpxếptheothứtựgiảmđượclàmhoàntoàntươngtự. 45.1PhươngphápchọnÝtưởng: Dãykhóacầnsắpxếplàk[1],k[2],…,k[n]. Ởlượtthứi(i=1,2,3,…,n2)tasẽchọn trongdãykhóak[i+1],….,k[n]khóanhỏ nhấtvàđổichỗnóvớik[i] Saun1lượtkhóatừnhỏđếnlớnsẽđược sắpxếpởcácvịtríthứ1,thứ2,…thứn1, thứn. 55.1Phươngphápchọn Thuậttoán: voidSX_chon(int*k,intn) {inti,x; for(i=1;i5.2PhươngphápchènÝtưởng: Dãykhóacầnxếplàk[1],k[2],…,k[n]. Đầutiênkhóak[1]chỉcómộtkhóađãđược sắpxếp.Xétthêmk[2],sosánhnóvớik[1] đểxácđịnhchỗchènnóvàovàtacó2 khóađượcsắpxếp.Đốivớik[3]lạiso sánhvớik[2],k[1]vàcứnhưvậyđếnkhi xétxongk[n]. 75.2PhươngphápchènCàiđặt: Đểcóchỗchokhóamớiphảidịchchuyển cáckhóalùilạisauvàdùngXlàmônhớ phụchứakhóađangđượcxét.Đểkhóa mớidùởvịtríđầutiêncũngđượcchèn vàogiữakhóanhỏvàlớnhơnnó,tathêm vàokhóagiảk[0]=∞. 85.2Phươngphápchèn voidSX_chen(int*k,intn) {intj; for(inti=2;i5.3PhươngphápnổibọtCàiđặt: Bảngcáckhóasẽđượcduyệttừđáylên đỉnh.Dọcđườngnếugặp2khóakếcận ngượcthứtựtasẽđổichỗchúngvới nhau. Saumỗilượtsắpxếpcácgiátrịkhóanhỏ sẽnổidầnlêngiốngnhưbọtnướctrong nồinướcđangsôi. 105.3Phươngphápnổibọt voidSX_noibot(int*k,intn) {for(inti=1;i=i+1;j) if(k[j]5.3Phươngphápnổibọt voidswap(int*c,int*d) {inta; a=*c; *c=*d; *d=a; return; } 12Đánhgiá3phươngpháp: Độphứctạptrungbìnhcủathuậttoán chungchocả3phươngpháplàO(n2) 135.4PhươngphápsắpxếpnhanhÝtưởng:Chọnkhóađầutiêncủadãylàmchốt. Mọiphầntửnhỏhơnkhóachốtphải đượcxếpvàođầudãy.Mọiphầntử lớnhơnkhóachốtphảiđượcxếpvào cuốidãy.Muốnvậy,cácphầntửtrong dãysẽđượcsosánhvớikhóachốtvà sẽđổivịtríchonhau. 145.4PhươngphápsắpxếpnhanhKhiviệcđổichỗđãthựchiệnxong,dãy khóađượcphânlàm2đoạn.Đoạnđầu gồmcáckhóanhỏhơnchốt,đoạnsau gồmcáckhóalớnhơnchốt,khóachốt nằmgiữa2đoạn.Haiđoạnsẽđượcxửlýriênggiốngnhư vậy.Quátrìnhxửlýtừngđoạnsẽkết thúckhichỉcòn1phầntử. 155.4Phươngphápsắpxếpnhanh voidSX_nhanh(int*k,intL,intU) {intB=1; if(L5.4Phươngphápsắpxếpnhanh swap(&k[L],&k[j]); SX_nhanh(k,L,j1); SX_nhanh(k,j+1,U); } return;} 175.4Phươngphápsắpxếpnhanh Đánhgiá: Độphứctạptrungbìnhcủathuậttoánlà O(nlog2n) Khikíchthướcphânđoạnđãnhỏ,tadùng phươngphápsắpxếpđơngiảntiệnhơn. 185.5PhươngphápvunđốngCàiđặt: Trướchếtphảitạođốnglàtạoracâynhị phânhoànchỉnhmàkhóaởnútchabao giờcũnglớnhơnkhóaởcácnútconcủa nó.Câynhịphânnàyđượclưutrữkế tiếptrongmáy. 195.5Phươngphápvunđống Giaiđoạnthứ2gồm: Đổichỗcủavịtrícuốicùngvớikhóaở gốccủađốngđểđưakhóalớnnhấtvềvị tríđúng. Vunlạithànhđốngchocâychứanhững nútcònlại. 20 ...
Nội dung trích xuất từ tài liệu:
Bài giảng Cấu trúc dữ liệu - Chương 5: Sắp xếpCHƯƠNG5SẮP XẾP 1 Chương5:Sắpxếp5.1Phươngphápchọn5.2Phươngphápchèn5.3Phươngphápchènnhịphân5.4Phươngphápnổibọt5.5Phươngphápsắpxếpnhanh5.6Phươngphápvunđống 24.1bàitoánsắpxếp ̣ ̣ Cómôttâpnđô ́itượng.Mỗiđốitượngcónhiềuthuôcti ̣ ́nh,đượcthêhiên ̉ ̣ ̣ ̉ ̉bằngmôtkiêubanghigô ̀mnhiềutrường.Sắpxếplàquátrìnhbốtrílạicácbảnghitheomộttrườnggoila ̣ ̀khóa. Vídụtrongbảngdanhbạgồmcácbảnghicótêncơquan,địachỉ,sốđiệnthoại.Sổdanhbạthườngđượcsắpxếptheotrườngkhóalàtêncơquanđểdễtìmkiếm. 34.1bàitoánsắpxếp Sắpxếplàthaotáccầnthiếthaygặptrongquátrìnhlưutrữvàquảnlýdữliệu.Có2phươngphápsắpxếp:sắpxếptrongtácđộnglêncácbảnghilưutrữởbộnhớtrongvàSắpxếpngoàiliênquanđếntậplớncácbảnghilưutrữtrêntệp.Chươngnàychỉxétbàitoánsắpxếptrongtheothứtựtăngcủakhóa.Sắpxếptheothứtựgiảmđượclàmhoàntoàntươngtự. 45.1PhươngphápchọnÝtưởng: Dãykhóacầnsắpxếplàk[1],k[2],…,k[n]. Ởlượtthứi(i=1,2,3,…,n2)tasẽchọn trongdãykhóak[i+1],….,k[n]khóanhỏ nhấtvàđổichỗnóvớik[i] Saun1lượtkhóatừnhỏđếnlớnsẽđược sắpxếpởcácvịtríthứ1,thứ2,…thứn1, thứn. 55.1Phươngphápchọn Thuậttoán: voidSX_chon(int*k,intn) {inti,x; for(i=1;i5.2PhươngphápchènÝtưởng: Dãykhóacầnxếplàk[1],k[2],…,k[n]. Đầutiênkhóak[1]chỉcómộtkhóađãđược sắpxếp.Xétthêmk[2],sosánhnóvớik[1] đểxácđịnhchỗchènnóvàovàtacó2 khóađượcsắpxếp.Đốivớik[3]lạiso sánhvớik[2],k[1]vàcứnhưvậyđếnkhi xétxongk[n]. 75.2PhươngphápchènCàiđặt: Đểcóchỗchokhóamớiphảidịchchuyển cáckhóalùilạisauvàdùngXlàmônhớ phụchứakhóađangđượcxét.Đểkhóa mớidùởvịtríđầutiêncũngđượcchèn vàogiữakhóanhỏvàlớnhơnnó,tathêm vàokhóagiảk[0]=∞. 85.2Phươngphápchèn voidSX_chen(int*k,intn) {intj; for(inti=2;i5.3PhươngphápnổibọtCàiđặt: Bảngcáckhóasẽđượcduyệttừđáylên đỉnh.Dọcđườngnếugặp2khóakếcận ngượcthứtựtasẽđổichỗchúngvới nhau. Saumỗilượtsắpxếpcácgiátrịkhóanhỏ sẽnổidầnlêngiốngnhưbọtnướctrong nồinướcđangsôi. 105.3Phươngphápnổibọt voidSX_noibot(int*k,intn) {for(inti=1;i=i+1;j) if(k[j]5.3Phươngphápnổibọt voidswap(int*c,int*d) {inta; a=*c; *c=*d; *d=a; return; } 12Đánhgiá3phươngpháp: Độphứctạptrungbìnhcủathuậttoán chungchocả3phươngpháplàO(n2) 135.4PhươngphápsắpxếpnhanhÝtưởng:Chọnkhóađầutiêncủadãylàmchốt. Mọiphầntửnhỏhơnkhóachốtphải đượcxếpvàođầudãy.Mọiphầntử lớnhơnkhóachốtphảiđượcxếpvào cuốidãy.Muốnvậy,cácphầntửtrong dãysẽđượcsosánhvớikhóachốtvà sẽđổivịtríchonhau. 145.4PhươngphápsắpxếpnhanhKhiviệcđổichỗđãthựchiệnxong,dãy khóađượcphânlàm2đoạn.Đoạnđầu gồmcáckhóanhỏhơnchốt,đoạnsau gồmcáckhóalớnhơnchốt,khóachốt nằmgiữa2đoạn.Haiđoạnsẽđượcxửlýriênggiốngnhư vậy.Quátrìnhxửlýtừngđoạnsẽkết thúckhichỉcòn1phầntử. 155.4Phươngphápsắpxếpnhanh voidSX_nhanh(int*k,intL,intU) {intB=1; if(L5.4Phươngphápsắpxếpnhanh swap(&k[L],&k[j]); SX_nhanh(k,L,j1); SX_nhanh(k,j+1,U); } return;} 175.4Phươngphápsắpxếpnhanh Đánhgiá: Độphứctạptrungbìnhcủathuậttoánlà O(nlog2n) Khikíchthướcphânđoạnđãnhỏ,tadùng phươngphápsắpxếpđơngiảntiệnhơn. 185.5PhươngphápvunđốngCàiđặt: Trướchếtphảitạođốnglàtạoracâynhị phânhoànchỉnhmàkhóaởnútchabao giờcũnglớnhơnkhóaởcácnútconcủa nó.Câynhịphânnàyđượclưutrữkế tiếptrongmáy. 195.5Phươngphápvunđống Giaiđoạnthứ2gồm: Đổichỗcủavịtrícuốicùngvớikhóaở gốccủađốngđểđưakhóalớnnhấtvềvị tríđúng. Vunlạithànhđốngchocâychứanhững nútcònlại. 20 ...
Tìm kiếm theo từ khóa liên quan:
Cấu trúc dữ liệu Bài giảng Cấu trúc dữ liệu Bài giảng Cấu trúc dữ liệu chương 5 Phương pháp chọn Phương pháp chèn Phương pháp chèn nhị phânTài liệu có liên quan:
-
Đề cương chi tiết học phần Cấu trúc dữ liệu và giải thuật (Data structures and algorithms)
10 trang 361 0 0 -
Giải thuật và cấu trúc dữ liệu
305 trang 187 0 0 -
Bài giảng Phân tích thiết kế phần mềm: Chương 1 - Trường ĐH Ngoại ngữ - Tin học TP.HCM
64 trang 175 0 0 -
Tài liệu tham khảo: Cấu trúc dữ liệu và giải thuật
229 trang 149 0 0 -
Tập bài giảng Thực hành kỹ thuật lập trình
303 trang 146 0 0 -
Giáo trình Cấu trúc dữ liệu và thuật toán (Tái bản): Phần 1
152 trang 145 0 0 -
Lập trình C - Cấu trúc dữ Liệu
307 trang 110 0 0 -
Ứng dụng và cài đặt cấu trúc dữ liệu bằng C: Phần 1
338 trang 104 0 0 -
49 trang 87 0 0
-
Bài giảng Cấu trúc dữ liệu và thuật toán: Chương 3 - Một số mô hình thuật toán
42 trang 81 0 0