Paros elemek a tomb elejere, paratlan elemek a tomb vegere, Pascalban?
Van egy egydimenzios tombom, amelyet ugy szeretnek rendezni, hogy a paros elemeket betegye a tomb elejere, es a paratlan elemeket a tomb vegere
pl:
1 2 3 4 5 => 2 4 1 3 5
Hogyan lehet ezt megcsinalni?
Tessék, megírtam neked C#-ban, Pascalra csak le tudod fordítani, ugye?
static void z(int[] q){int i=0,j,x;while(i<q.Length){j=0;while(j<q.Length-i-1){if(q[j]%2==1&&q[j+1]%2==0){x=q[j];q[j]=q[j+1];q[j+1]=x;}j++;}i++;}}
A kolléga megoldása jó, csakkicsit lehet rajta optimalizálni még:
static void z(int[]_){int ____=0,__,___;while(____<_.Length){__=0;while(__<_.Length-____-((1+1)-1)){if(_[__]%(1+1)==((1+1)-1)&&_[__+((1+1)-1)]%(1+1)==0){___=_[__];_[__]=_[__+((1+1)-1)];_[__+((1+1)-1)]=___;}__++;}____++;}}
A kiválogatás helyben tétele elvileg..
BrainFuckban is le tudnátok írni amúgy?
@#6: Én ugyan nem. Pascalban sokkal egyszerűbb, meg hát Kérdező is abban kérte:
procedure _(var _1:array of byte);var _2,_3,_4:integer;begin _2:=0;while _2<Length(_1) do
begin _3:=0;while _3<Length(_1)-1 do begin if(_1[_3]mod 2=1)and(_1[_3+1]mod 2=0)then begin
_4:=_1[_3];_1[_3]:=_1[_3+1];_1[_3+1]:=_4;end;Inc(_3);end;Inc(_2);end;end;
Az eredményben számít a sorrend?
Tehát a páros elemek és páratan elemek sorrendje az eredeti kell legyen? Mert ha nem, akkor felesleges 2 egymába ágyazott ciklus, csak indulj el a tömb 2 végéről és lépkedj "középre" (Nyilán nem közép, hanem attől függ hova, hogy párosból és páratlanból mennyi van) amíg jók az elemek. Ha össeérsz, akkor vége, egyébként pedig felcseréled a 2 elemet.
A te példádvan ekkor ezt kapod:
4 2 3 1 5
Egyet kell értenem a 9-essel.
Ez egy sima merge sort-tal is O(n*logn) (nyilván módosítani kell az összehasonlító feltételt, hogy a páros számokat előre vegye, de ez ugye konstans idő).
Simán megoldható O(n)-ben is, de eleve nem tudunk eleget a feladatról, pl. hogy eleve rendezett-e a tömb (mert a kérdező által írt példában ugye az).
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!