Arrayumsortierung



  • Hi,ich versuche nach Berechnungen ein Array so umzusortieren, dass ich ein Element an die erste Stelle setze, jedoch die weitere Reihenfolge gleich bleibt.
    ZB: arrayX=[2,7,6,1]
    durch Berechnungen, die dazu nicht relevant sind möchte ich die x-te Stelle an 1. Position haben. ZB, wenn ich mir die '6' aussuche, wie bekomme ich es hin, dass ich dann erhalte:
    [6,2,7,1]?
    ich würde das erst einmal in ein Hilfsarray schreiben, sodass in diesem Array lautet:
    arrayY[0] = 6;
    wie erhalte ich es, dass siche die Reihenfolge nicht ändert, beispielsweise duch ein 2. Hilfsarray
    arrayZ = [2,7,1]
    würde das funktionieren mit

    for(i = 0; i < 4, i++){
    while( i != 2){
    arrayz[i] = arrayX[i];
    }
    }
    

    oder würde dadurch ein Loch entstehen, wo normalerweise die ausgewählte Zahl stünde? Hoffe jemand kann mir weiterhelfen, ich würde das gern mit den Hilfsarrays machen, auch wenn ihr sicherlich wisst, wie das viel leichter gehen würde. Denn zum Schluß könnte ich beide Hilfsarrays wieder zu einem neuen Array zusammensetzen...



  • Dazu brauchst du imho kein Hilfsarray. Du mußt nur das Element zwischenspeichern, das an den Anfang soll, danach kannst du alle übrigen Elemente ein Feld nach hinten schieben und am Ende das gemerkte Element auf den ersten Platz setzen:

    int tmp = array[src];
    for(int i=src;i>0;--i)
      array[i]=array[i-1];
    array[0]=tmp;
    

    PS: Randfrage: Was willst du mit der Aktion eigentlich erreichen?


Log in to reply