Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 11 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
11
Dung lượng
496,5 KB
Nội dung
1 Sắp xếp (sorting) Bài toán: Sắp xếp lựa chọn (selection sort) Thủ tục lựa chọn: Sắp xếp trao đổi ( exchange sort) Thủ tục trao đổi: td lc Ct.1 Ct.2 {thủ tục xếp trao đổi} Sắ p xếp làp xế bốp trí lại thứ tự đối tượng Procudure {thủ tục sắsxep2; lựa chọn} nhằ m thoả mãinteger; n yê u Boolean; cầu Yêu Var i, M, tg: OK: Procedure sxep1; cầ u để theo mà tiến hành xếp gọi Begin Cho nguyêinteger; n K = {k1, k2, …, kn} Cần Var dãyi,số j, min,tg: khoáM:=N; xếp sắBegin p xếp lại phần tử K cho sau Repeat For xếpi:=xong K trở thành dãy tăng to N-1 dầnBegin OK:= True; M:= M-1; i:= 113 to M24 65 19 27 30 Ví dụ: For K= Min:= i; IF K[i] > K[i+1] Then For N doc dãy tăng Sau khiBegin sắpj:= xếi+1 p tato đượ If K[min] > K[j]K[i+1]; then min:=j; tg:= K[i]; K[i]:= K[i+1]:= tg; 13 K[min]; 19 24 K[min]:= 27 30 tg; 65 K= tg:= K[i];8 K[i]:= OK:= False; End; End; End; Until OK; End; K= 12 i=1 25 16 31 22 N min=1 Bắt đầu Sắp xếp lựa chọn i:=1, min:=i j:=i+1 Đ K[min]>K[j] Min:=j S S Kết thúc Đ i >= N i:=i+1 j:=j+1 j>N S Đ Đổi chỗ k[min] với K[i] ► j=2 K= 12 i=1 25 min=1 Procedure sxep1; Var 16 31 K[min]>K[ j ]? 22 N i, j, min,tg: integer; Begin For i:= to N-1 Begin Min:= i; For j:= i+1 to N If K[min] > K[j] then min:=j; tg:= K[i]; K[i]:= K[min]; K[min]:= tg; End; End; ► j=2 K= 12 25 16 31 22 i=1 min=1 Procudure sxep; Var i, j, k,tg: integer; Begin For i:= to N-1 Begin Min:= i; For j:= i+1 to N If K[min] > K[j] then min:=j; tg:= K[i]; K[i]:= K[min]; K[min]:= tg; End; End; ► i=1 K= 12 25 16 Bắt đầu M 31 22 M M=N Sắp xếp trao đổi N Đúng MM Sai ki> k i+1 Sai ► i=1 K= 12 25 16 31 22 M M=N Procudure sxep2; Var i, M, tg: integer; OK: Boolean; Begin M:=N; Repeat OK:= True; M:= M-1; For i:= to M IF K[i] > K[i+1] Then Begin tg:= K[i]; K[i]:= K[i+1]; K[i+1]:= tg; OK:= False; End; Until OK; End; ► j=2 K= 12 T i=1 min=1 j=3 j=4 F 25 F 16 T min=2 K[min]>K[ j ]? j=3 K= i=2 j=5 j=4 j=6 min=5 j=5 j=6 F 25 F 16 F 12 T 6 25 i=3 • j=7 j=8 F 31 F 22 min=6 j=4 j=8 F F 31 F 22 min=2 K= j=7 min=3 T 16 min=4 j=6 j=5 T 12 min=5 T j=7 j=8 F 31 F 22 min=6 • • • K= 12 16 22 25 31 ► F F G B G B E E K • Sắp xếp K để làmII gì? JJ A A D H H D C C • Làm để xếp? LL ► i = i=1 K= i=2 12 T i=3 F i=4 i=5 25 T 16 T T K= i=2 F i=3 i=5 i=4 12 F 16 T T i=7 F 31 T 22 31 M So sánh Ki > Ki + i=1 i=6 M=N i=6 F 25 T 22 25 31 M i=1 K= i=2 F i=4 i=3 12 T T i=5 F 16 F 22 25 31 25 31 M • • • • K= 12 31 22 ► Hình ảnh bọt khí nước, bọt tích lớn lên trước ► [...]...Hình ảnh nổi bọt khí trong nước, bọt có thể tích lớn nổi lên trước 5 3 4 2 6 7 1 ► ... K[min]; K[min]:= tg; End; End; ► i=1 K= 12 25 16 Bắt đầu M 31 22 M M=N Sắp xếp trao đổi N Đúng MM Sai ki> k i+1 Sai ► i=1 K= 12 25 16 31...K= 12 i=1 25 16 31 22 N min=1 Bắt đầu Sắp xếp lựa chọn i:=1, min:=i j:=i+1 Đ K[min]>K[j] Min:=j S S Kết thúc Đ i >= N i:=i+1 j:=j+1 j>N S Đ Đổi chỗ k[min] với K[i] ► j=2 K= 12 i=1 25 min=1... j=7 j=8 F 31 F 22 min=6 • • • K= 12 16 22 25 31 ► F F G B G B E E K • Sắp xếp K để làmII gì? JJ A A D H H D C C • Làm để xếp? LL ► i = i=1 K= i=2 12 T i=3 F i=4 i=5 25 T 16 T T K= i=2 F i=3 i=5