Hirdetés

Új hozzászólás Aktív témák

  • czappa

    aktív tag

    Hi! Pascal guruk segítségét szeretném kérni, írtam egy programot (delphi console application - tehát gyak. pascal), ami a buborékos rendezést reprezentálja:


    program buborekos_r;
    {buborék rendezés, mert az jó
    osszehasonlitjuk az 1. ket elemet, és ha az 1. nagyobb,
    akkor csereljuk. Majd a 2. és 3. elemet vizsgaljuk, stb.
    }
    {a ''rendez'' eljarasrol:
    az n elemu dinamikus tomb 0-tol (n-1)-ig szamozza az elemeket
    Mivel egy elemet mindig az utana kovetkezovel vizsgalunk, így
    n-1 ellenorzesre van szuksegunk, ezért menne a belso ciklus 0-tol
    (n-2)-ig. Mivel azonban a belso ciklus elso lefutasakor a legnagyobb
    elem a helyere kerult, így a masodik lefutaskor az utolso ellenorzest
    nem kell elvegezni, igy a belso ciklus
    0-tol (n-2-i)-ig megy (kezdetben i=0)
    }
    {$APPTYPE CONSOLE}

    uses
    SysUtils;

    type
    tomb = array of integer;

    var
    n: integer;
    vektor: tomb;

    procedure beolvas(var vektor: tomb; n: integer);
    var i,szam: integer;
    begin
    for i:=0 to n-1 do
    begin
    write('A(z) ',i,'. elem: ');
    readln(szam);
    vektor:=szam;
    end;
    end;

    procedure kiir(var vektor: tomb; n: integer);
    var i: integer;
    begin
    writeln('A tomb elemei: ');
    for i:=0 to n-1 do
    begin
    writeln('A(z) ',i,'. elem: ',vektor
    );
    end;
    end;

    procedure rendez(var vektor: tomb; n: integer);
    var i,j, k: integer;
    begin
    writeln('Rendezes...');
    for i:=0 to n-2 do
    begin
    for j:=0 to n-2-i do
    begin
    if vektor[j] > vektor[j+1] then
    begin
    k:=vektor[j+1];
    vektor[j+1]:=vektor[j];
    vektor[j]:=k;
    end;
    end;
    end;
    end;

    begin
    write('Hany elemu legyen a tomb: ');
    readln(n);
    setlength(vektor, n); //dinamikus tomb hosszanak beallitasa
    beolvas(vektor, n); //ertekadas a tomb elemeinek
    //kiir(vektor, n);
    writeln;
    rendez(vektor, n); //a rendezes; a program lenyege
    kiir(vektor, n); //a rendezett tomb kiirasa
    readln;
    end.

    A program olyan értelemben jó, hogy lefut és megcsinálja, a kérdésem az lenne, hogy lehet e gyorsabban csinálni (még mindig buborékos rendezésnél maradva), vagy ez a max. , amit ki lehet hozni belőre. Egyáltalán ez a buborékos rendezés?
    (nyilván a kérdésemmel kapcsolatban a ''rendez'' eljárás a lényeg a többi csak sallang)

    szer.: ehh, az egészet dőlt betűsként írja ki, talán a copy&paste miatt?? Mind1.


    [Szerkesztve]

Új hozzászólás Aktív témák