首页 > 解决方案 > 如何计算代码中的比较?我需要一个变量计数器,然后我需要返回它

问题描述

import random

def QuickSort(Lista):
  if len(Lista) <= 1: return Lista
      
  min = []
  ugu = []
  mag = []
  pivot = Lista[-1]
    
  for i in Lista:
    if i < pivot: min.append(i)
    elif i == pivot: ugu.append(i)
    else: mag.append(i)
    
  return QuickSort(min) + ugu + QuickSort(mag)

l = [random.randrange(10) for i in range(10)]
print(QuickSort(l))

标签: pythoncounter

解决方案


您可以单独进行比较。

count = 0

def lt(a, b):
    global count
    count += 1
    if a < b:
        return True
    return False

def eq(a, b):
    global count
    count += 1
    if a == b:
        return True
    return False

def quicksort(tosort):
    if len(tosort) <= 1:
        return tosort
    minside = []
    middle = []
    maxside = []
    pivot = tosort[-1]
    for i in tosort:
        if lt(i, pivot):
            minside.append(i)
        elif eq(i, pivot):
            middle.append(i)
        else:
            maxside.append(i)
    return quicksort(minside) + middle + quicksort(maxside)

tosort = [
    [*range(10)],
    [*range(9, -1, -1)],
    [5, 2, 9, 2, 5, 1, 9, 0, 2, 4]
]
for sorting, name in [(quicksort, 'quicksort')]:
    for alist in tosort:
        sorting(alist.copy())
        count = 0
        print(
            f"{name} {alist} {sorting(alist.copy())} {count}"
        )

推荐阅读