littlelee Admin
Tổng số bài gửi : 415 Join date : 20/12/2009 Age : 29 Đến từ : Nghĩa địa
| Tiêu đề: Các thuật toán sắp xếp |sắp xếp đổi chỗ| Mon 08 Mar 2010, 20:22 | |
| Khi học mảng, một trong những thứ cơ bản nhất là sắp xếp. Thuật toán sắp xếp thì thầy cô đã dạy rồi, tuy nhiên ở đây mình xin trình bày lại, một là để các bạn cũng cố, hai là để chuẩn bị cho các thuật toán sau, lấy thuật toán cơ bản này để so sánh, đối chiếu. Trong các thuật toán, mình xin chỉ trình bày về việc xếp tăng dần. Xếp giảm dần sẽ ngược lại. Mô phỏng: thuật toán so sánh từng cặp số một để tìm ra các gí trị thích hợp. Đầu tiên nó sẽ so sánh phần tử (pt) thứ nhất với pt thứ hai, nêu ph thứ hai nhỏ hơn thì đổi chỗ pt thứ nhất cho pt thứ hai. Tiếp tục nó sẽ so sánh pt thứ nhất với pt thứ ba, nếu pt thứ ba nhỏ hơn thì đổi chỗ pt htuws nhất cho pt thứ 3...Cứ tiếp tục như vậy, so sánh đến pt thứ nhất và pt thứ n, nếu pt thứ n nhỏ hơn thì đổi chỗ pt thứ nhất và pt tử thứ n. Sau đó, ta sẽ so sánh pt thứ 2 với pt thứ 3, nếu pt thứ 3 nhỏ hơn sẽ đổi chỗ pt thứ 2 cho pt thứ 3...Cho đến khi so sánh pt thứ 2 và pt thứ n...Vẫn tiếp tục như vậy cho đến khi so sánh pt thứ n-1 và pt thứ n, nếu pt thứ n nhỏ hơn thì đổi chỗ. Sau khi đã thực hiện xong, mảng sẽ được xếp tăng dần. Sau đây là bài cụ thể: - Code:
-
program xep_mang; uses crt; var a:array[1..100] of integer; i,j,n,s:integer; begin clrscr; write('nhap vao so phan tu cua mang: ');readln(n); for i:=1 to n do begin write('a[',i,']=');readln(a[i]); end; for i:=1 to n-1 do for j:=i+1 to n do if a[j]<a[i] then begin s:=a[i]; s[i]:=a[j]; a[j]:=s; end; write('mang sau khi xep la: '); for i:=1 to n do write(a[i],' '); readln; end. Muốn xếp giảm dần thì đổi a[j]<a[i] bằng a[j]>a[i] là xong. | |
|