Pagini: 1 2 [3] 4   În jos
  Imprimă  
Ajutor Subiect: 028 Sortare prin comparare  (Citit de 35709 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
skull
Client obisnuit
**

Karma: 17
Deconectat Deconectat

Mesaje: 75



Vezi Profilul
« Răspunde #50 : Martie 03, 2010, 14:29:53 »

Am obtinut imbunatatiri semnificative la timpi dar tot la 80 pct am ramas Brick wall.
Memorat
alexandru92
Nu mai tace
*****

Karma: -191
Deconectat Deconectat

Mesaje: 496



Vezi Profilul
« Răspunde #51 : Martie 03, 2010, 14:49:15 »

Fa functiile iterativ Smile
Memorat
skull
Client obisnuit
**

Karma: 17
Deconectat Deconectat

Mesaje: 75



Vezi Profilul
« Răspunde #52 : Martie 03, 2010, 15:03:26 »

Din moment ce recursivitatea nu apeleaza aceeasi functie de 2 ori(pentru a pierde timp), de ce ar merge mai rapid iterativ?Whistle In plus e mult mai elegant recursiv. Thumb up
Memorat
popoiu.george
Vorbaret
****

Karma: 19
Deconectat Deconectat

Mesaje: 162



Vezi Profilul
« Răspunde #53 : Martie 03, 2010, 15:27:46 »

@skull prin recursivitate programul lucreaza cu stiva, si de aici s-ar putea sa fie mai incet programul.
Memorat
zsee
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 6



Vezi Profilul
« Răspunde #54 : Martie 03, 2010, 15:28:07 »

ms mult Cosmin!

Nu stiu cum nu am mai auzit de asta.... dar e foarte fain, a taiat timpul de executie la jumate Very Happy
http://infoarena.ro/job_detail/409234
Memorat
skull
Client obisnuit
**

Karma: 17
Deconectat Deconectat

Mesaje: 75



Vezi Profilul
« Răspunde #55 : Martie 03, 2010, 15:43:47 »

Am folosit settextbuf si pt. fisierul de iesire si deja au aparut timpi mult mai buni. Merci Cosmin & Alexandru. Yahoo!

LE: Functia settextbuf "pacaleste" doar compilatorul folosit pe infoarena sau si pe cele de la oji/oni? Ca doar o asemenea imbunatatire de timp poate face diferenta.
« Ultima modificare: Martie 03, 2010, 15:51:00 de către Mihai Alexandru » Memorat
zsee
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 6



Vezi Profilul
« Răspunde #56 : Martie 03, 2010, 18:42:35 »

cred ca la oni compilatorul e tot fpc si ar trebui sa mearga Thumb up
Memorat
alexandru92
Nu mai tace
*****

Karma: -191
Deconectat Deconectat

Mesaje: 496



Vezi Profilul
« Răspunde #57 : Martie 03, 2010, 19:15:04 »

Am folosit settextbuf si pt. fisierul de iesire si deja au aparut timpi mult mai buni. Merci Cosmin & Alexandru. Yahoo!

LE: Functia settextbuf "pacaleste" doar compilatorul folosit pe infoarena sau si pe cele de la oji/oni? Ca doar o asemenea imbunatatire de timp poate face diferenta.
IDE-ul de la oji/oni e Free Pascal, deci da Smile
Memorat
Cosmin
Echipa infoarena
Nu mai tace
*****

Karma: 351
Deconectat Deconectat

Mesaje: 1.799



Vezi Profilul
« Răspunde #58 : Martie 03, 2010, 20:40:56 »

@alexandru free pascal nu e ide, ci e compilator.

settextbuf nu parseaza citirea ci in loc sa citeasca caracter cu caracter citeste o portiune de marimea bufferului, asta face citirea de pe disc mai eficienta.
Memorat
ana.z
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 2



Vezi Profilul
« Răspunde #59 : Iunie 26, 2010, 09:45:40 »

Cod:
#include<stdio.h>
long n,j,i,aux,v[50001];
int main()
{
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
scanf("%ld",&n);
for(i=1;i<=n;i++)
scanf("%ld",&v[i]);
for(i=1;i<n;i++)
for(j=i+1;j<=n;j++)
if(v[j]<v[i])
{
aux=v[i];
v[i]=v[j];
v[j]=aux;
}
for(i=1;i<=n;i++)
printf("%ld ",v[i]);
return 0;
}

 Read This! Imi da TLE-uri cam pe jumatate din teste!Nu inteleg de ce.... sad wink
« Ultima modificare: Iunie 26, 2010, 14:29:34 de către Andrei Grigorean » Memorat
SpiderMan
Nu mai tace
*****

Karma: -463
Deconectat Deconectat

Mesaje: 937



Vezi Profilul
« Răspunde #60 : Iunie 26, 2010, 10:07:01 »

Din cate vad eu acea sortare nu esti "optima" ... Iti trebuie o sortare in O ( N logN ) .
« Ultima modificare: Ianuarie 03, 2011, 10:50:05 de către Simoiu Robert » Memorat
PlayLikeNeverB4
Nu mai tace
*****

Karma: 212
Deconectat Deconectat

Mesaje: 721



Vezi Profilul
« Răspunde #61 : Octombrie 25, 2010, 00:15:36 »

Chiar nu inteleg de ce nu iau 100... sau macar punctaj mai mare.
http://infoarena.ro/job_detail/495408?action=view-source

Edit: Nu conteaza. Construiam heap-ul gresit. Faceam upheap de jos in sus. Stupid, stupid me. d'oh! Brick wall

P.S.: Quicksort sux !
« Ultima modificare: Octombrie 25, 2010, 11:42:30 de către George Marcus » Memorat
c_sebi
Client obisnuit
**

Karma: 24
Deconectat Deconectat

Mesaje: 62



Vezi Profilul
« Răspunde #62 : Ianuarie 02, 2011, 21:38:58 »

La multi ani!

A incercat cineva sortare pe liste inlantuite? Am incercat un Merge sort pe liste simplu inlantuite, dar am luat 80p. Vreo idee cum as putea imbunatati solutia? http://infoarena.ro/job_detail/518727
Mersi!
Memorat
brucewillis
Strain


Karma: 9
Deconectat Deconectat

Mesaje: 8



Vezi Profilul
« Răspunde #63 : Ianuarie 02, 2011, 22:29:25 »

din cate stiu eu nu poti sorta eficient liste.
Memorat
blustudio
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 9



Vezi Profilul
« Răspunde #64 : Mai 03, 2011, 18:53:50 »

Ati putea sa-mi spuneti si mie ce s-ar putea optimiza la http://infoarena.ro/job_detail/587011 deoarece nu ia 100p, iar acelasi algoritm scris in Pascal ia punctajul maxim http://infoarena.ro/job_detail/587028 ?
Memorat
SpiderMan
Nu mai tace
*****

Karma: -463
Deconectat Deconectat

Mesaje: 937



Vezi Profilul
« Răspunde #65 : Mai 03, 2011, 20:24:33 »

In sursa Cpp, incearca sa inlocuiesti unsigned long long cu int si vezi rezultatele Wink.
Memorat
caen1
Client obisnuit
**

Karma: 22
Deconectat Deconectat

Mesaje: 75



Vezi Profilul
« Răspunde #66 : Decembrie 01, 2011, 20:34:24 »

Cu qsort-ul din C nu am mai reusit sa iau 100. E in regula, sau ar trebui sa il adaug la lista cu limite care trebuie calibrate?

Job 1: http://infoarena.ro/job_detail/615319
Job 2: http://infoarena.ro/job_detail/642627
Memorat
Laura_M
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 4



Vezi Profilul
« Răspunde #67 : Decembrie 30, 2011, 13:29:21 »

Buna!
Am trimis urmatoarea problema si imi spune ca fisierul de iesire e corupt si o chestie cu killed by signal 11. Imi puteti spune ce nu e in regula?

Cod:
#include <iostream>
#include <fstream>

using namespace std;

int a[100], n;

void interclasare (int i, int m, int j)
{
     int b[100];
     int x=i;
     int k=1;
     int y=m+1;
     while ((x<=m)&&(y<=j))
       if (a[x]<a[y])
           b[k++]=a[x++];
       else
           b[k++]=a[y++];
     while (x<=m)
           b[k++]=a[x++];
     while (y<=j)
           b[k++]=a[y++];
     int t=i;
     for (k=i; k<=(j-i)+1; k++)
          {a[t]=b[k];
           t++;}
}

void div_imp (int i, int j)
{
     if (i<j)
        {int m=(i+j)/2;
         div_imp(i,m);
         div_imp(m+1,j);
         interclasare(i,m,j);}
}

int main()
{
    int a[100], p=0, q=0;
    fstream f("algsort.in", ios::in);
    while (!f.eof())
      {p++;
       f>>a[p];
       q++;}
    for (p=1; p<q; p++)
        cout<<a[p]<<" ";
    f.close();
    div_imp(1,n);              
    fstream g("algsort.out", ios::out);
    for (p=1; p<q; p++)
         g>>a[p];
    g.close();
    return 0;    
}      
                                               

job #654373

Editat de admin: Foloseste tagul "code" cand postezi surse.
« Ultima modificare: Decembrie 31, 2011, 13:27:55 de către Andrei Grigorean » Memorat
SpiderMan
Nu mai tace
*****

Karma: -463
Deconectat Deconectat

Mesaje: 937



Vezi Profilul
« Răspunde #68 : Decembrie 30, 2011, 13:53:00 »

Din cate vezi, nu ai 100 elemente, ai 500.000 Tongue. Pune limita 500005 si e suficient Smile.
Memorat
Laura_M
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 4



Vezi Profilul
« Răspunde #69 : Decembrie 31, 2011, 11:22:26 »

Multumesc, SpiderMan; imi scapase asta. Dar imi spune in continuare ca fisierul de iesire e corupt. Nu inteleg de ce. Vreo sugestie?
Memorat
SpiderMan
Nu mai tace
*****

Karma: -463
Deconectat Deconectat

Mesaje: 937



Vezi Profilul
« Răspunde #70 : Decembrie 31, 2011, 11:35:05 »

Cod:
 for (p=1; p<q; p++)
         g>>a[p];
Aici nu cumva e <= q in for ? Daca nu e asta, o sa iau codul sa ma uit pe el Smile.
Memorat
Laura_M
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 4



Vezi Profilul
« Răspunde #71 : Decembrie 31, 2011, 11:40:20 »

Am modificat si da aceeasi eroare. Ai putea sa te uiti pe ea putin, te rog? Very Happy
Memorat
PlayLikeNeverB4
Nu mai tace
*****

Karma: 212
Deconectat Deconectat

Mesaje: 721



Vezi Profilul
« Răspunde #72 : Decembrie 31, 2011, 13:04:22 »

- Variabila n ti-e neinitializata (ma rog, e 0, dar nu cred ca asta iti doresti)
- Din cate vad tu introduci in sirul de numere si numarul de pe prima linie a fisierului (adica numarul care ar trebui sa reprezinte numarul de elemente ale sirului). Poti citi acel numar separat si apoi citirea sirului cu un for.
Memorat
Laura_M
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 4



Vezi Profilul
« Răspunde #73 : Decembrie 31, 2011, 17:48:50 »

Multumesc, merge acum Smile
Memorat
reking
Strain
*

Karma: 3
Deconectat Deconectat

Mesaje: 39



Vezi Profilul
« Răspunde #74 : Iunie 29, 2013, 13:28:02 »

Deci cel mai eficient algoritm de sortare este 'Merge sort'Huh  Very Happy
Memorat
Pagini: 1 2 [3] 4   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines