Các giải thuật sắp xếp

63 830 9
Các giải thuật sắp xếp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Các giải thuật sắp xếp

S P X PẮ ẾNguy n Văn Linhễ M c tiêuụSau khi hoàn t t bài h c này b n c n ph i:ấ ọ ạ ầ ả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.ể ư ồ ủ ả ậ ắ ếHi u các ch ng trình s p x p. ể ươ ắ ếHi u đ c vi c đánh giá các gi i thu t. ể ượ ệ ả ậ T m quan tr ng c a bài toán s p x pầ ọ ủ ắ ếS p x p m t danh sách các đ i t ng theo m t ắ ế ộ ố ượ ộth t nào đó là m t bài toán th ng đ c v n ứ ự ộ ườ ượ ậd ng trong các ng d ng tin h c.ụ ứ ụ ọS p x p là m t yêu c u không th thi u trong ắ ế ộ ầ ể ếkhi thi t k các ph n m m. ế ế ầ ềDo đó vi c nghiên c u các ph ng pháp s p ệ ứ ươ ắx p là r t c n thi t đ v n d ng trong khi l p ế ấ ầ ế ể ậ ụ ậtrình. S p x p trong và s p x p ngoàiắ ế ắ ếS p x p trongắ ế là s s p x p ự ắ ế d li u đ c t ch c trong b nh ữ ệ ượ ổ ứ ộ ớtrong c a máy tính.ủCác đ i t ng c n đ c s p x p là các m u tin g m m t ho c nhi u ố ượ ầ ượ ắ ế ẩ ồ ộ ặ ềtr ng. M t trong các tr ng đ c g i là khóa (key), ki u c a nó là m t ườ ộ ườ ượ ọ ể ủ ộki u có quan h th t (nh các ki u s nguyên, s th c, chu i ký t .). ể ệ ứ ự ư ể ố ố ự ỗ ựDanh sách các đ i t ng c n s p x p s là m t m ng c a các m u tin ố ượ ầ ắ ế ẽ ộ ả ủ ẩv a nói trên. ừ ởM c đích c a vi c s p x p là t ch c l i các m u tin sao cho các khóa ụ ủ ệ ắ ế ổ ứ ạ ẩc a chúng đ c s p th t t ng ng v i quy lu t s p x p. ủ ượ ắ ứ ự ươ ứ ớ ậ ắ ếM t cách m c nhiên, quy lu t s p x p là th t không gi m. Khi c n s p ộ ặ ậ ắ ế ứ ự ả ầ ắx p theo th t không tăng thì ph i nói rõ.ế ứ ự ảS p x p ngoàiắ ế là s s p x p đ c s d ng khi s l ng đ i t ng c n ự ắ ế ượ ử ụ ố ượ ố ượ ầs p x p l n không th l u tr trong b nh trong mà ph i l u tr trên ắ ế ớ ể ư ữ ộ ớ ả ư ữ b ộnh ngoàiớ . T ch c d li u và ngôn ng cài đ tổ ứ ữ ệ ữ ặÐ trình bày các ví d minh h a chúng ta s dùng C ể ụ ọ ẽ(Turbo C++, Version 3.0) làm ngôn ng th hi n và ữ ể ệs d ng khai báo sau. ử ụconst int n = 10;typedef int keytype;typedef float othertype;typedef struct recordtype {keytype key;othertype otherfields; };recordtype a[n]; /* khai bao mang a co n phan tu */ T ch c d li u và ngôn ng cài đ t (tt)ổ ứ ữ ệ ữ ặvoid Swap(recordtype *x, recordtype *y){ recordtype temp; temp = *x; *x = *y; *y = temp;}C n th y r ng th t c Swap l y O(1) th i gian vì ch ầ ấ ằ ủ ụ ấ ờ ỉth c hi n 3 l nh gán n i ti p nhau.ự ệ ệ ố ế Gi i thu t s p x p ch n (Selection Sort)ả ậ ắ ế ọB c 0, ch n ph n t có khóa nh nh t trong n ph n ướ ọ ầ ử ỏ ấ ầt t a[0] đ n a[n-1] và hoán v nó v i ph n t a[0].ử ừ ế ị ớ ầ ửB c 1, ch n ph n t có khóa nh nh t trong n-1 ph n ướ ọ ầ ử ỏ ấ ầt t a[1] đ n a[n-1] và hoán v nó v i a[1].ử ừ ế ị ớT ng quát b c th i, ch n ph n t có khoá nh ổ ở ướ ứ ọ ầ ử ỏnh t trong n-i ph n t t a[i] đ n a[n-1] và hoán v nó ấ ầ ử ừ ế ịv i a[i].ớSau n-1 b c này thì m ng đã đ c s p x p.ướ ả ượ ắ ế Ph ng pháp ch n ph n tươ ọ ầ ửĐ u tiên ta đ t khoá nh nh t là khoá c a a[i] (lowkey ầ ặ ỏ ấ ủ= a[i].key) và ch s c a ph n t có khoá nh nh t là i ỉ ố ủ ầ ử ỏ ấ(lowindex = i).Xét các ph n t a[j] (v i j t i+1 đ n n-1), n u khoá c a ầ ử ớ ừ ế ế ủa[j] nh h n khoá nh nh t (a[j].key < lowkey) thì đ t ỏ ơ ỏ ấ ặl i l i khoá nh nh t là khoá c a a[j] (lowkey = a[j].key) ạ ạ ỏ ấ ủvà ch s c a ph n t có khoá nh nh t là j (lowindex ỉ ố ủ ầ ử ỏ ấ= j).Khi đã xét h t các a[j] (j>n-1) thì ph n t có khoá nh ế ầ ử ỏnh t là a[lowindex]. ấ Ví d s p x p ch nụ ắ ế ọ                KhóaBước 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 0  2 6 5 2 10 12 9 10 9 3Bước 1 25 6 10 12 9 10 9 3Bước 236 10 12 9 10 9 5Bước 3510 12 9 10 9 6Bước 4612 9 10 9 10Bước 5912 10 9 10Bước 6910 12 10Bước 71012 10Bước 81012Kết quả 2 2 3 5 6 9 9 10 10 12 L u đ ư ồs p x p ch nắ ế ọBegini = 0i<=n-2lowindex = ilowkey = a[i].keyj<=n-1i = i+1a[j].key<lowkeylowindex = jlowkey = a[j].keyj = j+1Sj = i+1Endswap(a[i],a[lowindex])SĐSĐĐ [...]... b nh ữ ệ ượ ổ ứ ộ ớ trong c a máy tính.ủ  Các đ i t ng c n đ c s p x p là các m u tin g m m t ho c nhi u ố ượ ầ ượ ắ ế ẩ ồ ộ ặ ề tr ng. M t trong các tr ng đ c g i là khóa (key), ki u c a nó là m t ườ ộ ườ ượ ọ ể ủ ộ ki u có quan h th t (nh các ki u s nguyên, s th c, chu i ký t ). ể ệ ứ ự ư ể ố ố ự ỗ ự  Danh sách các đ i t ng c n s p x p s là m t m ng c a các m u tin ố ượ ầ ắ ế ẽ ộ ả ủ ẩ v a nói trên.... ệ T(n) = O(n). M c tiêuụ Sau khi hoàn t t bài h c này b n c n ph i:ấ ọ ạ ầ ả  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.ể ư ồ ủ ả ậ ắ ế  Hi u các ch ng trình s p x p. ể ươ ắ ế  Hi u đ c vi c đánh giá các gi i thu t. ể ượ ệ ả ậ Ví d v phân ho chụ ề ạ Chỉ số 0 1 2 3 4 5 6 7 8 9 Khoá 5... ch tố .  Ví d :ụ Ch n ch t trong các m ng sauọ ố ả – Cho m ng g m các ph n t có khố là 6, 6, 5, 8, 7, 4, ta ch n ả ồ ầ ử ọ ch t là 6 (khoá c a ph n t đ u tiên).ố ủ ầ ử ầ – Cho m ng g m các ph n t có khố là 6, 6, 7, 5, 7, 4, ta ch n ả ồ ầ ử ọ ch t là 7 (khoá c a ph n t th 3).ố ủ ầ ử ứ – Cho m ng g m các ph n t có khố là 6, 6, 6, 6, 6, 6 thì khơng ả ồ ầ ử có ch t (các ph n t có khố b ng nhau).ố ầ ử... các đ i t ng c n s p x p s là m t m ng c a các m u tin ố ượ ầ ắ ế ẽ ộ ả ủ ẩ v a nói trên. ừ ở  M c đích c a vi c s p x p là t ch c l i các m u tin sao cho các khóa ụ ủ ệ ắ ế ổ ứ ạ ẩ c a chúng đ c s p th t t ng ng v i quy lu t s p x p. ủ ượ ắ ứ ự ươ ứ ớ ậ ắ ế  M t cách m c nhiên, quy lu t s p x p là th t không gi m. Khi c n s p ộ ặ ậ ắ ế ứ ự ả ầ ắ x p theo th t không tăng thì ph i nói rõ.ế ứ ự ả  S... và R cho đ n khi L > R. ế  Khi đó L s là đi m phân ho ch, c th là a[L] là ph n t ẽ ể ạ ụ ể ầ ử đ u tiên c a m ng con “bên ph i”.ầ ủ ả ả T ch c d li u và ngôn ng cài đ tổ ứ ữ ệ ữ ặ  Ð trình bày các ví d minh h a chúng ta s dùng C ể ụ ọ ẽ (Turbo C++, Version 3.0) làm ngôn ng th hi n và ữ ể ệ s d ng khai báo sau. ử ụ const int n = 10; typedef int keytype; typedef float othertype; typedef struct... Ví d v phân ho chụ ề ạ Chỉ số 0 1 2 3 4 5 6 7 8 9 Khoá 5 4 2 1 5 12 8 10 15 8 L=4 Ch t p = 8ố R=7 Ph ng pháp xenươ  Ph n t đang xét a[j] s đ c xen vào v trí thích ầ ử ẽ ượ ị h p trong danh sách các ph n t đã đ c s p tr c ợ ầ ử ượ ắ ướ đó a[0],a[1], a[j-1]:  So sánh khố c a a[j] v i khoá c a a[j-1] đ ng ngay ủ ớ ủ ứ tr c nó. ướ  N u khố c a a[j] nh h n khố c a a[j-1] thì hoán ế ủ ỏ ơ ủ đ i a[j-1] . i:ấ ọ ạ ầ ả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. ộ ớtrong c a máy tính.ủ Các đ i t ng c n đ c s p x p là các m u tin g m m t ho c nhi u ố ượ ầ ượ ắ ế ẩ ồ ộ ặ ềtr ng. M t trong các tr ng đ c g i là khóa

Ngày đăng: 20/08/2012, 13:40

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan