Vd1: Hãy viết chương trình nhập vào một mảng gồm các số nguyên , sau đó hãy chuyển các số lẻ lên phần đầu của mảng , số chẵn về phần sau của mảng, rồi sắp xếp các phần đó theo quy tắc: sắp xếp các số lẻ tăng dần và số chẵn giảm dần.
VD mảng : 1 3 5 4 2 7
mảng mới : 1 3 5 7 4 2
Đầu tiên ta sắp xếp mảng thành mảng tăng, dùng thủ tục đổichỗ
Ta thấy ai <= ai+1
tạo mảng mới lưu kết quả
Với a[1] nếu là lẻ ta đưa về đầu mảng b tức là b[1] :=a[1] nếu không thì đưa về cuối mảng b[n]:=a[1];
với a[2] nếu là lẻ ta đưa về đầu mảng nhưng sau b[1] hoặc chẵn thì đưavề trước b[n];
tương tự cho đến a[n];
CODE:
USES crt;
VAR a,b:ARRAY[1..1000] OF LONGINT;
i,j,n,k,l,tg:LONGINT;
PROCEDURE Doicho;{ thu tuc doi cho }
BEGIN
tg:=a[j];
a[j]:=a[j+1];
a[j+1]:=tg;
END;
BEGIN
Write('Nhap n : ');
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:=1 TO n-1 DO
IF a[j] > a[j+1] THEN
doicho; {sap xep lai mang }
k:=0;l:=n;
FOR i:=1 TO n DO
IF a[i] MOD 2 <> 0 THEN
BEGIN
inc(k);
b[k]:=a[i];{neu a[i] chan }
END ELSE
BEGIN
dec(l);
b[l]:=a[i];{neu a[i] le }
END;
FOR i:=1 TO n DO
Write(b[i]:3);
Readln;
END.