2D Array nach Zeilen Sortieren



  • Hallo Freunde,

    ich weiß mal wieder nicht weiter!
    Mein prgramm handelt ziemlich große 2d Arrays (Größenordnung: 1 000 000 * 100)jetzt habe ich herausgefunden dass es von höchster wichtigkeit ist daß 2dArray nach der ersten spalte sortiert ist! (1 000 000 Einträge müssen aufsteigend sortiert werden)
    Alle Möglichkeiten dir mir dazu einfallen sind mit langer Rechenzeit verbunden...
    zur Zeit funktioniert die sache in dem ich die Daten als *.CSV rausschreibe, im Excel nach Spalte A aufsteigend sortieren, speichere und wieder als array einlese....

    Hat jemand von euch sowas schon mal gemnacht?

    Beste Grüße,

    Lin



  • Ich hab jetzt mal was geschrieben was funktioniert.
    Dieser Algorythmus funktionniert gut bei versteuten Daten. In meinem Fall wird von "fast perfekt" geordneten daten ausgegangen! Hier sollte es doch eine schnellere Lösung geben...

    hier erst Mal mein Code:

    n = Zeilen_csv;
    	while(swap = 1 && n>=1){
    		swap = 0;
    		for (i=0;i<n-1;i++){
    			if (csv_array[i][0]>csv_array[i+1][0]){
    				for (j=0;j<Spalten_csv; j++){
    					tmp = csv_array[i][j];
    					csv_array[i][j] = csv_array[i+1][j];
    					csv_array[i+1][j] = tmp;
    				}
    			swap = 1;
    			}
    		}
    		n--;
    	}
    


  • Dann verwende den Quicksort-Algorithmus mit Hilfe der Funktion 'qsort'.


Log in to reply