Sortier Algorithmus



  • Dann implementiere selber einen Sortieralgo, den Du auch verstehst. Den kannste ganz leicht anpassen, sodaß er ganze Zeilen anhand eines Attributs sortiert.
    Und dann kannste das aus einem C-Tut gecopypastete Quicksort auch anpassen.

    Und das ist wohl die gemeine Zeile im Code:

    void void quickSort(int array[3][], int min, int max)
    


  • volkard schrieb:

    Dann implementiere selber einen Sortieralgo, den Du auch verstehst. Den kannste ganz leicht anpassen, sodaß er ganze Zeilen anhand eines Attributs sortiert.
    Und dann kannste das aus einem C-Tut gecopypastete Quicksort auch anpassen.

    Und das ist wohl die gemeine Zeile im Code:

    void void quickSort(int array[3][], int min, int max)
    

    jop bin gerade am "verstehen" des Sortier Algorithmus hatte mit so etwas vorher noch nix zutun ...
    bin nur nicht weiter gekommen weil ich das anders versucht hatte... 🙄

    vielen dank ich versuchs gleich mal... 🙂



  • ich habe das jetzt angepasst, aber jetzt sortiert er nicht mehr, wieso das?
    was hab ich falsch gemacht? 😕

    void quickSort(int array[3][12], int min, int max)
     {
    	int i = min, j = max;
    	int tmp;
    	int pivot = array[3][((min + max) / 2)];
    
    	while (i <= j)
    	{
    		while (array[3][i] < pivot)
    		{
    			i++;
    		}
    
    		while (array[3][j] > pivot)
    		{
    			j--;
    		}
    
    		if (i <= j)
    		{
    			tmp = array[3][i];
    			array[3][i] = array[3][j];
    			array[3][j] = tmp;
    			i++;
    			j--;
    		}
    	}
    
    	if (min < j)
    	{
    		quickSort(array, min, j);
    	}
    	if (i< max)
    	{
    		quickSort(array, i, max);
    	}
    }
    


  • [2]

    und dann musste das tauschen zum großtausch machen.



  • volkard schrieb:

    [2]

    und dann musste das tauschen zum großtausch machen.

    jo ich glaube ich habs gelöst... meinst du in etwa so?

    ich hab jetzt einfach da wo er die werte "tauscht" die anderen werte des arrays mitgetauscht... eig total logisch wenn ich so darüber nachdenke... 🙂
    viel dank so wie es aussieht passt das so 😃 ...

    void quickSort(int array[3][12], int min, int max)
     {
    	int i = min, j = max;
    	int tmp;
    	int tmp2;
    	int tmp3;
    	int pivot = array[2][((min + max) / 2)];
    
    	while (i <= j)
    	{
    		while (array[2][i] < pivot)
    		{
    			i++;
    		}
    
    		while (array[2][j] > pivot)
    		{
    			j--;
    		}
    
    		if (i <= j)
    		{
    			tmp = array[2][i];
    			array[2][i] = array[2][j];
    			array[2][j] = tmp;
    
    			tmp2 = array[1][i];
    			array[1][i] = array[1][j];
    			array[1][j] = tmp2;
    
    			tmp3 = array[0][i];
    			array[0][i] = array[0][j];
    			array[0][j] = tmp3;
    
    			i++;
    			j--;
    
    		}
    	}
    
    	if (min < j)
    	{
    		quickSort(array, min, j);
    	}
    	if (i< max)
    	{
    		quickSort(array, i, max);
    	}
    }
    


  • problem gelöst... 😃
    thema kann geschlossen werden ... 🙂

    vielen dank für die hilfe 🙂 ...

    lg



  • Witzig, hab gestern Abend genau das selbe gebraucht 😃

    Falls es dich noch interessiert:

    #include <iostream>
    #include <vector>
    #include <algorithm>
    
    int main() {
    	using namespace std;
    	vector<vector<int>> p = {{ 3, 4, 5 },
                                { 1, 2 },
                                { 8, 7, 8 }};
    
    	auto p_cmp = [](vector<int> const &lhs, vector<int> const &rhs) { return lhs[0] < rhs[0]; };
    	sort(begin(p), end(p), p_cmp); // Sortiert nach der ersten Spalte
    
    	for (auto const &i : p) {
    		for (auto const &j : i) 
    			cout << j << ' '; 
    		cout << '\n';
    	}
    }
    


  • happystudent schrieb:

    Witzig, hab gestern Abend genau das selbe gebraucht 😃

    Falls es dich noch interessiert:

    #include <iostream>
    #include <vector>
    #include <algorithm>
    
    int main() {
    	using namespace std;
    	vector<vector<int>> p = {{ 3, 4, 5 },
                                { 1, 2 },
                                { 8, 7, 8 }};
    	
    	auto p_cmp = [](vector<int> const &lhs, vector<int> const &rhs) { return lhs[0] < rhs[0]; };
    	sort(begin(p), end(p), p_cmp); // Sortiert nach der ersten Spalte
    	
    	for (auto const &i : p) {
    		for (auto const &j : i) 
    			cout << j << ' '; 
    		cout << '\n';
    	}
    }
    

    jo doch 🙂 vielen dank ... 🙄



  • Schoen zu sehen, dass immer mehr aktuelles C++11 eingesetzt wird, schliesslich ist der "neue" Standard ja schon wieder ein paar Jahre alt und der naechste steht vor der Tuer.



  • qwertzuiop schrieb:

    Schoen zu sehen, dass immer mehr aktuelles C++11 eingesetzt wird, schliesslich ist der "neue" Standard ja schon wieder ein paar Jahre alt und der naechste steht vor der Tuer ist auch schon seit Sommer draußen.

    FTFY.


Anmelden zum Antworten