Diễn đàn tin học Nguyễn Văn Linh
Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.

Diễn đàn tin học Nguyễn Văn Linh

The second house for every one
 
Trang ChínhLatest imagesTìm kiếmĐăng kýĐăng Nhập

 

 Các thuật toán sắp xếp |sắp xếp đổi chỗ|

Go down 
Tác giảThông điệp
littlelee
Admin
Admin
littlelee


Tổng số bài gửi : 415
Join date : 20/12/2009
Age : 29
Đến từ : Nghĩa địa

Các thuật toán sắp xếp |sắp xếp đổi chỗ| Empty
Bài gửiTiêu đề: Các thuật toán sắp xếp |sắp xếp đổi chỗ|   Các thuật toán sắp xếp |sắp xếp đổi chỗ| I_icon_minitimeMon 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.
Về Đầu Trang Go down
 
Các thuật toán sắp xếp |sắp xếp đổi chỗ|
Về Đầu Trang 
Trang 1 trong tổng số 1 trang
 Similar topics
-
» Các thuật toán sắp xếp |sắp xếp nổi bọt|
» Các thuật toán sắp xếp |sắp xếp chọn|
» Các thuật toán sắp xếp |sắp xếp chèn|
» Các thuật toán sắp xếp |sắp xếp nhanh|
» Cần giúp đỡ cải tiến thuật toán bài này

Permissions in this forum:Bạn không có quyền trả lời bài viết
Diễn đàn tin học Nguyễn Văn Linh :: Góc tin học :: Thủ thuật-
Chuyển đến