Một số thuật toán sắp xếp
Chia sẻ bởi Nguyễn Thị Tuyết |
Ngày 26/04/2019 |
57
Chia sẻ tài liệu: Một số thuật toán sắp xếp thuộc Tin học 11
Nội dung tài liệu:
A. MỘT SỐ THUẬT TOÁN SẮP XẾP
Sắp xếp chọn:
Ý tưởng: Tìm phần tử nhỏ nhất trong dãy và hoán vị nói với phần tử trong vị trí đầu tiên, sau đó tìm phần tử nhỏ nhất kế tiếp và hoán vị nó với phần tử trong vị trí thứ hai…. Lặp lại quá trình làm việc này cho tới khi toàn dãy được sắp xếp.
Sắp xếp chèn
Procedure chen;
Var i,j,tam: integer;
Begin
For i:=2 to N do
Begin
tam:=a[1];
j:=i;
while a[j-1]>tam do
begin
a[j]=a[j-1]; dec(j);
end;
a[j]:=tam;
End;
End;
Sắp xếp nổi bọt (tin 10)
Thuật toán Quick Sort
QuickSort đệ quy:
Procedure QuickSort(l,r:integer);
Var i,j,t,v: integer;
Begin
if r>l then
begin
v:=a[r]; i:=l-1; j:=r;
repeat
repeat i:=i+1 until a[i]=v;
repeat j:=j-1 until a[j]<=v;
t:=a[i]; a[i]:=a[j]; a[j]:=t;
until j a[j]:=a[i]; a[i]:=a[r]; a[r]:=t;
QuickSort(l,i-1); QuickSort(i+1,r);
end;
End;
Sắp xếp trộn
Procedure MergeSort;
Var i,j,k:integer;
Begin
i:=1;j:=1;
a[m+1]:=maxint; b[n+1]:=maxint;
for k:=1 to m+n do
if a[i] begin
c[k]:=a[i]; inc(i);
end
else
begin
c[k]:=b[j]; inc(j);
end;
End;
Sắp xếp chọn:
Ý tưởng: Tìm phần tử nhỏ nhất trong dãy và hoán vị nói với phần tử trong vị trí đầu tiên, sau đó tìm phần tử nhỏ nhất kế tiếp và hoán vị nó với phần tử trong vị trí thứ hai…. Lặp lại quá trình làm việc này cho tới khi toàn dãy được sắp xếp.
Sắp xếp chèn
Procedure chen;
Var i,j,tam: integer;
Begin
For i:=2 to N do
Begin
tam:=a[1];
j:=i;
while a[j-1]>tam do
begin
a[j]=a[j-1]; dec(j);
end;
a[j]:=tam;
End;
End;
Sắp xếp nổi bọt (tin 10)
Thuật toán Quick Sort
QuickSort đệ quy:
Procedure QuickSort(l,r:integer);
Var i,j,t,v: integer;
Begin
if r>l then
begin
v:=a[r]; i:=l-1; j:=r;
repeat
repeat i:=i+1 until a[i]=v;
repeat j:=j-1 until a[j]<=v;
t:=a[i]; a[i]:=a[j]; a[j]:=t;
until j a[j]:=a[i]; a[i]:=a[r]; a[r]:=t;
QuickSort(l,i-1); QuickSort(i+1,r);
end;
End;
Sắp xếp trộn
Procedure MergeSort;
Var i,j,k:integer;
Begin
i:=1;j:=1;
a[m+1]:=maxint; b[n+1]:=maxint;
for k:=1 to m+n do
if a[i] begin
c[k]:=a[i]; inc(i);
end
else
begin
c[k]:=b[j]; inc(j);
end;
End;
* Một số tài liệu cũ có thể bị lỗi font khi hiển thị do dùng bộ mã không phải Unikey ...
Người chia sẻ: Nguyễn Thị Tuyết
Dung lượng: |
Lượt tài: 0
Loại file:
Nguồn : Chưa rõ
(Tài liệu chưa được thẩm định)