Ich bin den Code jetzt nicht im Einzelnen durchgegangen, aber ein paar Dinge fallen mir auf:
- niemals mit true vergleichen
- wieso wendest Du Fließkommaoperationen auf ganze Zahlen an? Du könntest alternativ div 2 bzw. shr 1 benutzen.
- warum gehst Du von 1 bis Liste.Count, um dann den Index intern zu erhöhen/erniedrigen?
[edit] shl in shr geändert, war genau falsch herum
[/edit]