Caută 2 elemente identice în matrice

Caută 2 elemente identice în matrice.

Având în vedere o matrice - Mas: array [1..10] de Integer;

În ea două numere identice. Cum să-i găsească rapid.
Știu că o metodă:

var
# XA0; mas: array [1..10] de Integer;
# XA0; i, j, index1, index2: Integer;
începe
# XA0; index1: = 0;
# XA0; index2: = 0;
// umple o matrice cu valori aleatoare
# XA0; Aleator;
# XA0; pentru i: = 1 până la 10 do mas [i]: = random (100);
# XA0; i: = random (9) + 1;
# XA0; mas [i]: = 8;
# XA0; i: = random (9) + 1;
# XA0; mas [i]: = 8;
// Căutare reală
# XA0; pentru i: = 1 la 9 do
# XA0; # XA0; pentru j: = i + 1 la 10 fac
# XA0; # XA0; # XA0; dacă mas [i] = mas [j] atunci
# XA0; # XA0; # XA0; începe
# XA0; # XA0; # XA0; # XA0; index1: = i;
# XA0; # XA0; # XA0; # XA0; index2: = j;
# XA0; # XA0; # XA0; end;
se încheie;

Există alte metode?

în cazul în care, în condițiile de două din același element este exact, atunci se poate folosi doua in timp ce mai repede. Vor fi mai puține operații, în general.

Dacă doriți să căutați doar o pereche de numere identice, apoi, după ce le găsiți, nu uitați să puneți o declarație pauză, astfel încât ciclul nu este continuat în zadar.


> Nu uita pentru a pune o pauză

Spune-mi, ce crezi că pentru a utiliza o pauză, ieșire - ton normal de programare UPL? (UPL nu este un reproș, nimic rău UPL să spui că nu vrei. La fel ca și faptul că, pentru dezvoltarea generală. De exemplu, am încerca întotdeauna dispensează etih două echipe)

Note luate.
Și ce despre algoritmul - dacă există alți algoritmi, acest lucru mai repede?
(Scrie pe asamblare „e - nu sunt acceptate).


> Și ce despre algoritmul - dacă există alți algoritmi, mai rapid
> Acest lucru?

Ei bine, nu-mi amintesc. Trebuie să cunoaștem starea problemei mai în detaliu. Dacă în programul UPL face doar o dată (căutare) -, atunci, probabil, UPL va fi mult efektivnosti.

unde mă duc. bine, de exemplu, ia în considerare problema găsirii unui element într-o matrice. Prin numărul de tranzacții pentru mine cel mai bun mod de a mânca comparație consecventă efektivnosti a elementelor. Dar când același masivi (Mai mult) # XA0, va trebui să găsească o mulțime de ori diferite componente - atunci eu prefer primul de acest gen și mai rapidă metodă de a folosi, de exemplu, o căutare binară. Ca la mine cu această versiune a programului funcționează mai rapid.

pentru căutarea binar sortate nu este necesar, în conformitate cu o astfel de sarcină. suficient să se deplaseze unul față de altul, comparând elemente.


> Încercați întotdeauna dispensează etih două echipe

Asta e doar fără ele, este adesea dificil de făcut, dacă doriți să înțeleagă lyugky, frumos și la codul de eficient același timp.


> Asta e doar fără ele, este adesea dificil de făcut

și eu sunt Che este folosit pentru a costa doar condiții (bine, de exemplu, pentru a ieși din bucla).

În cazul în care matrice este sortat inițial, problema este rezolvată în cel mult o trecere completă.

> Oleg_teacher # XA0; (03/03/11 21:11) [3] Spune-mi, ce crezi că pentru a utiliza o pauză, ieșire - ton normal de programare UPL?

Du-te, Break, Exit, Continue, în timp ce-Do, Repetare-Pana - Mauvais tone. Orice Pascal, C, C ++, de fapt - Mauvais tone. Nici nu a menționat C #, de bază și Java. Aceste Jedi sunt scrise doar pe Assembler. Și chiar acolo, încearcă să evite orice Buclă „e există doar șapte adevărate mnemotehnică :. Mov, adăuga sau, și, Shr, SHL și JmpX Restul sunt mașinațiunile celor răi ..


> # XA0; binar de căutare - și același lucru este destinat exclusiv pentru sortat
> Date.

Sunt conștient de.


> Trebuie să ne gândim la diferitele sarcini

probabil. pentru o singură pereche - da. dacă găsiți o pereche de toate - numai binar de căutare va fi mai lent.


> Oleg_teacher # XA0; (03.03.11 21:11) [3]

Desigur, pauză, ieșire și ridicați contra principiilor programării structurate, dar fără ele, IMHO, uneori, codul poate deveni mult mai dificil de înțeles decât cu ei. De exemplu, în cazul în care a verificat mai multe condiții, mi se pare că acest cod este de înțeles, în cazul în care nerespectarea condițiilor de ieșire pentru a face, în loc să creeze un lanț de altceva în cazul în care. A pentru buclă în Delphi nu vă permit să adăugați condiții de ieșire, astfel încât să-l rupe, nu rupe face fără. # XA0, și să nu ridice eroare de manipulare devine un cosmar :)


> Che este folosit pentru a costa doar condiții (bine, de exemplu, pentru
> Din bucla).

Cum e asta?)
dacă expresia apoi Vyyti_iz_tsikla?
Un Vyyti_iz_tsikla - este necesar să se înțeleagă nu rupe. și goto kuda_to_za_predely_tela_tsikla?)


> # XA0, și să nu creeze un lanț de altceva, dacă

într-adevăr am făcut acest lucru, atunci când Nada a fost necesar.

> # XA0; A pentru buclă în Delphi nu vă permit să adăugați condiții
> exit

Și de ce doar pentru a fi de afecțiune?

deși înțeleg toate UPL un amator. Dar, pe unul dintre site-urile am găsit Descriere:
descriere
Procedura de ieșire se termină imediat funcția curentă sau procedura.

În cazul în care valoarea rezultatului funcției conține ultima.

Avertizare: Folosiți cu precauție - face dificilă întreținerea codului.


> În timp ce utilizați atunci când nada

Ar fi ciudat dacă ar putea fi folosit atunci când „Nenad“

Dar am făcut ceva despre celălalt.
Să presupunem că „algoritmică dispoziție“ ai format este de așa natură încât nu există nici o modalitate de a ieși din starea buclei determina pre- sau post-condiție, respectiv, în timp ce, sau repeta ciclul.

Și ce vei face?)


> Se face menținerea codului dificil

Pentru mireasa si iapa)

neînțelegând apoi undeva în ciclul de ieșire va insera Nada? Vseravno pe care l-ar folosi. va trebui să realizeze ceea ce condiție, așa că de ce condiție și UPL nu a selectat starea de ieșire a tsykla în timp sau se repetă.

Exit - acest lucru nu este calea de ieșire a ciclului, și este aici?
Este vorba despre Break - operatorul întrerupe bucla, controlul emițătorului declarația după „închidere paranteză“ ciclu.


> De ce condiție și nu a UPL selectați starea de ieșire a tsykla
> În timp ce sau repeta.

Pentru că de multe ori se întâmpla situație. în cazul în care ciclul trebuie să fie întreruptă în timp ce se execută deja iterație următoare

Aici este un exemplu simplu:

> În timp ce adevărații
> încercați
> # XA0; doSomething;
> cu excepția
> # XA0; Break;
> End;

Rescriem fără a utiliza Break - și vei obține codul voluminos și urât.


> Este o pauza

Da, îmi pare rău și-a exprimat în mod incorect.

> Acesta este întreruptă în timp ce se execută deja următoarea iterație

bine poate juca chiar și imaginați-vă cum ar trebui să fie utilizate și în cazul în care UPL. Ei bine, în general, este clar că aceste comenzi pot fi folosite, și nimic greșit în asigurarea nr. Cel mai important nu te confuz.


> Rescrie-l fără utilizarea Break - și veți obține voluminoase
> Și cod urât.

nesoglashus:
f: = Adevărat;
în timp ce f do
încerca
doSomething;
cu excepția
f: = False;
se încheie;

Și pentru mine, ca un foarte personal:

funcție # XA0; doSomething: boolean;
începe
# XA0; încercați
# XA0; # XA0;<.>
# XA0; cu excepția
# XA0; # XA0; Rezultat: = false;
# XA0; end;
se încheie;

în timp ce DoSomethig fac;

Și dacă încercăm-end, cu excepția-DoComething interior curat (), și a făcut un cușer solid.

Ei bine, nu ești de acord)
Dar atunci nu se plâng de faptul că această „înlocuire“:
1. Mai multe în mărime iskh.teksta (+ încă mai trebuie să declare o variabilă)
2. Efectuează cel puțin un „plus“, a verifica mai mult de dar minim inferior la performanța inițială.

> Oleg_teacher # XA0; (03.03.11 23:28) [26] nesoglashus:

IMHO, casetele chiar mai mult decât mizerie Du-te. Pur și simplu prea în codul Goto găsi vizual decât pentru a analiza starea de ieșire în buclă, și apoi pentru a găsi în cazul în care în codul stabilit sau că valoarea drapelului. Și dacă unele steaguri, și nu durerea universală.

În caz contrar, sunt de acord cu (S) - oh, deprimant privire la codul, mai mult adversarul, cu o gramada împrăștiate oricum steaguri scanate.
Steaguri sunt bune și necesare, în cazul în care, fără a le este pur și simplu imposibil de a face „un pic de sânge“, adică fără a compromite lizibilitatea codului și performanța de trecere a algoritmului.

[30] Nu a fost greoaie, dar urât. o (

> Nasty # XA0; (03.03.11 21:31) [12]
> Du-te, Break, Exit, Continue, în timp ce-Do, Repetare-Pana - tone Mauvais.
> Orice Pascal, C, C ++, de fapt - mauvais ton. Nici nu a menționat
> C #, de bază și Java. Aceste Jedi sunt scrise doar pe Assembler.
> Și chiar acolo, încearcă să evite orice Buclă „e. Există doar
> Șapte true mnemonic: Mov, Adauga, Sau, Și, Shr, SHL și JmpX.
> Toate celelalte sunt masinatiunile celor răi.

Adevărul verb, fiul meu, pentru restul celui rău ESF.

Este necesar să se omoare pentru un astfel de cod. Încet și cu poftă.

Faberge, ele sunt la fel, dar suntem aici pentru o pauză interpreta aparent)

urât # XA0; [29] - încă, probabil, da! Dar poate fără ele și nu se poate face. Eu încă mai simt o mare mizerie pogrammirovaniya Goto.

P.S. Deci, atunci când sobireshsya ucide - vă rugăm să folosiți codul de 24. Ia numai pauză. Apoi va fi lent. Asta este, pentru totdeauna.


> # XA0, Contrar Tora - da. Dar, ca întotdeauna dreptate, clientul,
> Mai degrabă decât Sfintele Scripturi. Cum de a pune TK - așa să fie.

Da, el nu numai că contrazice Tora, dar, de asemenea, Coranul, Sharia și tariqa împreună.

Sunt clienți care TK piese bydlokoda stipulează?

Break, Continue, Exit - regula.
Du-te și steaguri surogat - e de rahat.

P. P. S. Interesant această discuție pare din perspectiva unui programator C asociați.

Da, există unele)
Nadys este orientată către client pentru un astfel de specimen.
L-am portat la Delphi cineva acolo BCB-proiect, cu minor funcțional # XA0; adaosuri.
Deci acolo, într-un original, portabil, acest lucru a fost ponahrenovercheno - stand de păr la capăt)
Am întrebat sincer Clientul - ai spus, atunci cum toate acestea se întâmplă să grebla ceva. Și, spun ei, de ce săpa de două ori - pentru mine și apoi, dacă cineva nu este de ajuns pentru mine o dată chin pentru tine, atunci era liniștit și ușor de navigat în proiect. Hai, să zicem, un alt Podkin malyas de dolari - și voi aduce acest coșmar la un fel divin)
Clientul nu neagă faptul că un design portabil arata urat, a spus el. aluat, spun ei, nu se mai dau, spun ei, foarte puțin, dacă te angajează să lucreze, atunci fac ce spun ei și nu susțin despre chestiuni nobile)

Cazul, desigur, ele sunt diferite zavsegda :)


> Mă simt încă o mare mizerie pogrammirovaniya Goto.

Luați în considerare, ci pentru el însuși.

P.S.
Cazurile sunt diferite, doar ieri aruncat de la Fortran la Pascal.
Au existat 50 de bucăți goto. De ce am nevoie pentru a sparge algoritmul, care funcționează, dar încă mai prinde greșelile lor?
Du-te face cu nimic, Dumnezeu nu a trimis Karoo.

>> Cazurile sunt diferite, doar ieri aruncat de la Fortran la Pascal.

Este un lucru - traducerea de rutină a volumelor mari de cod din limba în care Goto este într-adevăr comenzile necesare. Și un alt lucru - transferul de obiceiurile de programare de la un limbaj de programare la altul.

„Acest programator poate scrie programe Fortran în orice limbaj de programare“ (C)

Pictograma pe care doriți? Albastru? Sau roșu? Sau nu, cu atât mai bine. maro. Cu statutul de „Maestru Fortran“.

P.S. Te-ar fi gândit de bază.

Asta-i drept, acest lucru se poate face rapid cu tehnologia potrivită decât
specificați limba, dar va trebui să lucreze foarte mult pe dezvoltarea macro


> Nasty # XA0; (04.03.11 09:43) [44]
>
> P.S. Te-ar fi gândit de bază.

Pentru mine, nu este necesar să se decidă ce vreau.
Ceea ce vreau, fac cu privire la situația, dar nu dau sfaturi, care este calea spre fericire.


> Cu limba în care Goto este într-adevăr comenzile necesare.

Ei bine, vă amintiți încă Fortran 66.
Acum Goto nu este necesară, dar să-l utilizați.

Din nou: „Acest programator poate scrie programe Fortran în orice limbaj de programare“ (C)

Alegerea nas, de asemenea, nu este necesar.
Dar, după poking în jurul valorii.
Pentru simplul motiv ca nasul este.
Nu ar fi un nas - nu tinkering.

Aceeași situație este cu goto.

P.S. Iartă-mă, fanii scobi în nas, în cazul în care nu am putut ajuta uschimil drepturile lor.


> Acum, Goto nu este necesară, dar să-l utilizați.

gene

articole similare