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.

Câu hỏi trong lớp Xem thêm