1. Trang chủ
  2. » Giáo Dục - Đào Tạo

CODE CAC THUAT TOAN SAP XEP

3 125 1

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 3
Dung lượng 31 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

CODE CÁC THUẬT TOÁN VỀ SẮP XẾP BẰNG NGÔN NGỮ PASCALSắp xếp là thuật toán căn bản không chỉ trong ngôn ngữ lập trình Pascal mà còn trong nhiều lĩnh vực công nghệ khác.. Bài viết sau sẽ để

Trang 1

CODE CÁC THUẬT TOÁN VỀ SẮP XẾP BẰNG NGÔN NGỮ PASCAL

Sắp xếp là thuật toán căn bản không chỉ trong ngôn ngữ lập trình Pascal mà còn trong nhiều lĩnh vực công nghệ khác Bài viết sau sẽ để cập đến một số thuật toán sắp xếp bằng ngôn ngữ Pascal

1 Bubble Sort (Sắp xếp nổi bọt)

Ý tưởng: Giả sử có mảng có n phần tử Chúng ta sẽ tiến hành duyệt từ cuối lên đầu,so sánh 2 phần

tử kề nhau, nếu chúng bị ngược thứ tự thì đổi vị trí, việc duyệt này bắt đầu từ cặp phần tử thứ n-1

và n Tiếp theo là so sánh cặp phần tử thứ n-2 và n-1,… cho đến khi so sánh và đổi chỗ cặp phần tử thứ nhất và thứ hai Sau bước này phần tử nhỏ nhất đã được nổi lên vi trí trên cùng (nó giống như hình ảnh của các “bọt” khí nhẹ hơn được nổi lên trên) Tiếp theo tiến hành với các phần tử từ thứ 2 đến thứ n

Procedure bubblesort(var amang; Ninteger);

begin

var i,j integer;

for i=2 to N do

for j=N down to i do

if (a[j] a[j-1])

then

hoanvi(a[j-1],a[j]);

end;

2 Selection Sort (Sắp xếp chọn)

Ý tưởng: Chọn phần tử nhỏ nhất trong n phần tử ban đầu, đưa phần tử này về vị trí đúng là đầu tiên của dãy hiện hành Sau đó không quan tâm đến nó nữa, xem dãy hiện hành chỉ còn n-1 phần tử của dãy ban đầu, bắt đầu từ vị trí thứ 2 Lặp lại quá trình trên cho dãy hiện hành đến khi dãy hiện hành chỉ còn 1 phần tử Dãy ban đầu có n phần tử, vậy tóm tắt ý tưởng thuật toán là thực hiện n-1 lượt việc đưa phần tử nhỏ nhất trong dãy hiện hành về vị trí đúng ở đầu dãy

Các bước tiến hành như sau:

Bước 1: i=1

Bước 2: Tìm phần tử a[min] nhỏ nhất trong dãy hiện hành từ a[i] đến a[n]

Bước 3: Hoán vị a[min] và a[i]

Bước 4: Nếu i<=n-1 thì i=i+1; Lặp lại bước 2

Ngược lại: Dừng n-1 phần tử đã nằm đúng vị trí

Procedure seletionsort(var a:mang; N:byte);

var i,j: byte; min: integer;

Trang 2

for 1:=1 to N-1 do

if (a[j] < a[min] then min:=j;

if (min <> i) then hoanvi (a[min]; a[i]; end;

Procedure hoanvi(var x,y: integer);

var tam:integer

begin

tam:=x

x:=y

y:=tam

end;

3 Insert Sort

Procedure insertionsort(var a:mang, N:byte); begin

var pos,i: byte; x:integer;

for i:=2 to N do

begin

x:=a[i]; pos:=i;

{sap xep tang dan}

while (pos>1 and a[pos-1]>x)do

begin

a[pos]:= a[pos-1]; dec(pos);

end;

a[pos]:= x;

end;

{sap xep giam dan}

while (pos>1)

begin

if(a[pos-1] > x)then

begin

a[pos]:= a[pos-1]; dec(pos);

end;

a[pos]:= x;

4 QuickSort

procedure Quicksort ( Var A: Mang);

Procedure Sort( Left, Right: Integer);

Var

i, j, k: Integer;

Trang 3

Begin

i:= Left;

j:= Right;

k:= A[(Left + Right) Div 2];

Repeat

While A[i] < k Do Inc(i);

While k < A[j] Do Dec(j);

If i <> j Then

Begin

HoanVi(A[i],A[j]);

Inc(i);

Dec(j);

end;

Until i > j;

If Left < j Then Sort(Left,j);

If i < Right Then Sort(i,Right); end;

Begin

Sort(Left; Right);

End;

Ngày đăng: 29/05/2019, 22:02

TỪ KHÓA LIÊN QUAN

w