Binäre Inversion



  • Hallo!

    Ich suche einen Algorithmus für folgende Problemstellung:

    Binäre Inversionen: Sei A eine Liste von Nullen und Einsen. 
    Die Zahl der Inversionen von A ist die Anzahl jener Paare (i,j) von Listenelementen, für die i<j, aber A[i]>A[j] gilt. 
    Der Zeitaufwand des Programms soll linear in der Länge von A sein.
    
    Beispiel: Die Liste (1,0,1,1,0) weist 4 Inversionen auf, nämlich (0,1), (0,4), (2,4) und (3,4).
    

    ok. mein problem liegt darin, einen algorithmus zu entwickeln, der log(n) braucht.
    Wäre für ein paar tipps dankbar 😉
    grüße,

    [EDIT]: ein algorithmus für normale inversion (also nicht binär) mit einem zeitaufwand von nlog(n) wäre auch ok.



  • pixsta schrieb:

    ok. mein problem liegt darin, einen algorithmus zu entwickeln, der log(n) braucht.

    Gibt's nicht. Du musst ja jede Stelle mindestens einmal angucken, damit bist du aber schon in Θ(n)\Theta(n)



  • hast du f+r Θ(n) einen algorithmus?



  • Von links nach rechts durchgehen, die 1en zaehlen, und jedesmal, wenn du auf 'ne 0 triffst, hast du soviele Inversionen wie vorher 1en.


Anmelden zum Antworten