Tải bản đầy đủ
CÁC THUẬT TOÁN TRÊN MẢNG

CÁC THUẬT TOÁN TRÊN MẢNG

Tải bản đầy đủ

Tài liệu bồi dưỡng HSG Pascal

Trường THCS Thái Hòa

Var d, I: integer;
Tam:integer;
Begin
D:=0;
For i:=1 to n do
If (a[i] mod 2 <>0) and (a[i]<>0) then
Begin
D:=d+1;
Tam:=a[i];
A[i]:=a[d];
A[d]:=tam;
End;
For i:=d+1 to n do
If a[i]=0 then
Begin
D:=d+1;
Tam:=a[i];
A[i]:=a[d];
A[d]:=tam;
End;
End;
2/ Thuật toán tìm giá trị lớn nhất, nhỏ nhất trong mảng
MAX:=A[1];
For i:=2 to n do
If maxMax:=a[i];
Min:=a[1];
For i:=2 to n do
If min> a[i] then
Min:=a[i];
3/ Thuật toán tìm phần tử có giá trị bằng x trong mảng
a/ tìm trong mảng có phần tử x không?
FUNCTION timx(x:integer; A:mang):boolean;
Var i:integer; kt:boolean;
Begin
Kt:=false;
For i:=1 to n do
Giáo viên: Nguyễn Quang Hiệu

Trang 37

Tài liệu bồi dưỡng HSG Pascal

Trường THCS Thái Hòa
If a[i]=x then kt:=true;
Timx:=kt;

End;
b/ Đếm số lần xuất hiện ký tự x trong mảng
FUCNTION Demx(x:integer; A:mang):integer;
Var I, dem:integer;
Begin
Dem:=0;
For i:=1 to n do
If a[i]=x then
Dem:=dem+1;
End;
4/ Thuật toán chèn một phần tử vào mảng
a/ chèn một số x vào vị trí k
PROCEDURE chenx(x:integer; k:integer; var A:mang);
Var i:integer;
Begin
For i:=n+1 downto k+1 do
A[i]:=a[i-1];
A[k]:=x;
End;
b/ Chèn một số x vào mảng đã sắp xếp tăng dần sao cho mảng vẫn được sắp xếp tăng
dần
PROCEDURE chen(x:integer; var A:mang);
Var I, j:integer;
Begin
If xBegin
For i:=n+1 downto 2 do
A[i]:=a[i-1];
A[1]:=x;
End
Else
If x>a[n] then
A[n+1]:=x
Giáo viên: Nguyễn Quang Hiệu

Trang 38

Tài liệu bồi dưỡng HSG Pascal

Trường THCS Thái Hòa

Else
Begin
J:=1;
While x>a[j] do
Inc(j);
For i:=n+1 downto j+1 do
A[i]:=a[i-1];
A[j]:=x;
End;
End;
(Chú ý: sau khi chèn x, mảng sẽ có n+1 phần tử)
Thuật toán 2:
PROCEDURE Tachtu(st:string; var a:mang; var n:integer);
Begin
N:=0;
St:=st+#32;
While pos(#32,st)<>0 do
Begin
Inc(n);
A[n]:=copy(st,1,pos(#32,st)-1);
Delete(st,1,pos(#32,st));
End;
End;
5/ Thuật toán cộng hai số nguyên lớn (sử dụng xâu ký tự)
PROCEDURE Cong(M, N:string; var s:string);
Var a,b,so, du, I, code:integer;
D:string[1];
Begin
If length(m) For i:=1 to length(n) – length(m) do
M:=’0’+m
Else
For i:=1 to length(m) – length(n) do
n:=’0’+n;
s:=’’;
du:=0;
for i:=length(m) downto 1 do
begin
val(m[i]),a,code);
val(n[i],b,code);
Giáo viên: Nguyễn Quang Hiệu

Trang 39

Tài liệu bồi dưỡng HSG Pascal

Trường THCS Thái Hòa

so:=(a+b+du) mod 10;
du:=(a+b+du) div 10;
str(so,d) ;
s :=d+s ;
end;
if du>0 then
begin
str(du,d);
s:=d+s;
end;
End;

Giáo viên: Nguyễn Quang Hiệu

Trang 40