Tìm số lớn thứ hai trong mảng Pascal và cho biết vị trí tương tự lm số bé thứ hai

2 câu trả lời

Câu 1: số lớn

var a:array[1..100] of integer;

i,j,tg,n:integer;

Begin

readln(n);

for i:=1 to n do

readln(a[i]);

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('phan tu lon thu 2 la:',a[2]);

readln;

End.

Câu 2: số bé

var a:array[1..100] of integer;

i,j,tg,n:integer;

Begin

readln(n);

for i:=1 to n do

readln(a[i]);

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('phan tu nho thu 2 la:',a[2]);

readln;

End.

Bạn sử dụng QuickSelect (gần giống QuickSort) phân ra 3 phần:

-Khoá key (một số ngẫu nhiên)

-Những số nhỏ hơn khoá key sẽ nằm bên trái

-Những số lớn hơn khoá key nằm bên phải

Sau đó kiểm tra xem khoá key có nằm đúng vị trí bạn tìm không? Nếu không thì lặp lại quá trình trên với sự thay đổi vẻ phạm vi.

Bạn tham khảo thêm tại đây: https://www.geeksforgeeks.org/kth-smallestlargest-element-unsorted-array-set-2-expected-linear-time-2/?ref=rp

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