Ich muss einen Zähler für Gesamtvergleiche für meine Insertion Sort-Programm hinzufügen, aber ich weiß nicht, warum ich insgesamt 0 Vergleiche bekomme!Python 3: Einfügung Sort Vergleichszähler
Ich weiß, dass die Vergleiche Ausgabe 15 (für meine spezifischen Array) sollte nicht 0
Dies ist mein Code so weit:
def insertionSort(values):
k = 0
n = len(values) - 1
comparisons = 0
while k+1 <= n:
i = k
while values[i] > values[i+1]:
temp = values[i]
values[i] = values[i+1]
values[i+1] = temp
comparisons += 1 #I think this is wrong
k = k + 1
return comparisons, values
Was mache ich falsch?
Ich habe gerade versucht, Ihre modifizierte Version danke, aber wenn ich mit dem Array [1, 2, 3, 55, 5, 6, 8, 7, 9, 111] testen, gibt es mir eine Gesamtvergleiche von '6' sollten 15 sein. –
Die Vergleichsvariable wird nur dann inkrementiert, wenn es einen Swap gibt, also gibt sie nicht genau die Anzahl der Vergleiche an. Um es vollständig zu melden, müssen Sie Ihren Zähler vor der inneren Weile und innerhalb der inneren while-Schleife erhöhen - beide Orte. 'während k + 1 <= n: i = k + 1 curr_val = Werte [i] Vergleiche + = 1 während i> 0 und Werte [i-1]> curr_val: Werte [i] = Werte [i-1] i = i-1 Vergleiche + = 1' Tun Sie diese Änderung, die es tun sollte ... –
gerade meine Antwort bearbeitet bitte überprüfen ... –