Sắp xếp qua lại trong Pascal
Viết chương trình sắp xếp mảng hai chiều (m hàng, n cột) (m,n <= 100) theo nguyên tắc sau:
Dữ liệu vào file: SORTZ.INP dòng đầu chứa m, n, các dòng sau chứa mảng 2 chiều m hàng, n cột
Dữ liệu ra file: SORTZ.OUT chứa mảng 2 chiều m hàng, n cột đã sắp xếp
VD:
SORTZ.INP | SORTZ.OUT |
4 31 3 52 4 68 7 911 10 12 | 1 2 36 5 47 8 912 11 10 |
Chú ý: Có thể yêu cầu sắp xếp như sau:
var i,j,k,m,n,tem:integer; a:array[1..100,1..100]of integer;b:array[1..10000]of integer; F:text; begin {---doc file ra mang mot chieu b-} assign(F,'sortz.inp');reset(F); read(F,m,n); k:=1; for i:=1 to m do for j:=1 to n do begin read(f,b[k]); k:=k+1; end; close(F); //for j:=1 to m*n do write(b[j],' '); {-- sap xep mang mot chieu-------} for i:=1 to m*n-1 do for j:=i+1 to m*n do if b[i]>b[j] then begin tem:=b[i]; b[i]:=b[j]; b[j]:=tem; end; // writeln; // for j:=1 to m*n do write(b[j],' '); {-- dat vao mang 2 chieu-------} i:=1;k:=1; for i:=1 to m do begin if i mod 2 = 1 then for j:=1 to n do begin a[i,j]:=b[k]; k:=k+1; end else for j:=n downto 1 do begin a[i,j]:=b[k]; k:=k+1; end; end; {-- xuat file ------} assign(F,'SORTZ.OUT'); rewrite(F); for i:=1 to m do begin for j:= 1 to n do write(f,a[i,j]:5); writeln(f); end; close(F); end.