PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C++ Programm beschleunigung



Planck
12-08-2012, 23:42
Hallo,
ich bin neu hier und komme auch schon mit einem kleinen problem.
ich haber ein programm geschrieben und das ausführen dauert ewig, beim profilen hab ich festgestellt das die folgende funktion einen großteil der rechenzeit in anspruch nimmt (die if abfrage)



void arraysortieren(int spalte)
{
int i,j,kleinstearrayzeile; double buffer;

for(i=0;i<gesamtzahl;i++)
{
kleinstearrayzeile=i;
for(j=i;j<gesamtzahl;j++)
{
if(input[j][spalte]<input[kleinstearrayzeile][spalte])
kleinstearrayzeile=j;
}

for(j=0;j<=3;j++)
{
buffer=input[i][j];
input[i][j]=input[kleinstearrayzeile][j];
input[kleinstearrayzeile][j]=buffer;
}
}
}


wie könnte ich den code den beschleunigen oder iwie verbessern? wäre für hilfen und tipps sehr dankbar :)

viele grüße
planck

anda_skoa
13-08-2012, 10:54
Ich denke das Problem dürfte hier sein, dass das ein Sortierverfahren mit der Komplexität O( n^2 ) ist, d.h. Lauzeit quadratisch mit der Anzahl der Elemente steigend.

Siehe auch http://de.wikipedia.org/wiki/Sortierverfahren

Es gibt keinen idealen Algorithmus, weil z.B. manche die gute Laufzeit haben zusätzlichen Speicher brauchen und das je nach Datenmenge auch schlecht sein kann.

Ich kenne jetzt die Umstände nicht, aber vermutlich könntest du mit dem Mergesort Verfahren schnell zu einer Verbesserung kommen.

Ciao,
_