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.