mô tả thuật toán sắp xếp giảm dần trên 1 dãy số cụ thể trong mảng A: 3 2 5 8 9
2 câu trả lời
Thuật toán:
- Cho biến i chạy từ 1 -> n-1 (vì đi đến số gần cuối sẽ xét số cuối nên sẽ là n-1)
- Cho biến j:=i+1 chạy đến n (vì j là biến xét từng số theo từ a[2] trở đi, còn i là ở a[1])
- Xét a[i]>a[j] thì có nghĩa là a[i] chưa nhỏ nhất, nếu có 1 số a[j]<a[i] thì hoán đổi hai số
Chương trình:
uses crt;
var a:array[1..10000] of longint;
n,i,j,k:longint;
begin
clrscr;
write('Nhap so luong phan tu: '); readln(n);
for i:=1 to n do
begin
write('Nhap phan tu thu ',i,': '); readln(a[i]);
end;
for i:=1 to n-1 do
for j:=i+1 to n do
if a[i]>a[j] then
begin
k:=a[i];
a[i]:=a[j];
a[j]:=k;
end;
write('Day tang dan: ');
for i:=1 to n do write(a[i],' ');
readln;
end.
Mô tả thuật toán: cho i chạy từ 1 đến n-1, cho j chạy từ i+1 đến n (2 lệnh lồng nhau), nếu A[i]>A[j] thì đổi vị trí lại cho nhau.
Chương trình
program sapxep;
uses crt;
var A:array[1..1000] of integer;
n,i,j,tg:integer;
begin
clrscr;
write('Nhap so luong phan tu: '); readln(n);
for i:=1 to n do
begin
write('A[',i,']= '); readln(A[i]);
end;
write('Mang vua nhap la: ');
for i:=1 to n do
write(A[i],' ');
writeln;
for i:=1 to n-1 do
for j:=i+1 to n do
if A[i]>A[j] then
begin
tg:=A[i];
A[i]:=A[j];
A[j]:=tg;
end;
write('Mang sau khi sap xep la: ');
for i:=1 to n do write(A[i],' ');
readln;
end.