python - 如何计算代码中的比较?我需要一个变量计数器,然后我需要返回它
问题描述
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))
解决方案
您可以单独进行比较。
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}"
)
推荐阅读
- ruby-on-rails - 我是否必须创建一个新的 docker 容器来运行每个 rake 任务?
- sql - #符号之间的PLSql变量
- python - Keras,只有一张图像的人脸检测
- c# - Xamarin Android:如何创建组合框
- highcharts - Higcharts - 如何从图表的开头删除 groupPadding
- xml - 数据中的列与范围中的列数不匹配(数据有 12 但范围有 11)
- node-red - NodeRED 使 CTRL+S 导致“完成”按钮单击
- c# - 如何在没有存储过程的情况下获取更新的行主键
- drools - 如何“启动条件”进程jbpm7?
- excel - 当两者都在同一个工作簿中指定不同的工作表时,我可以将一个 With 嵌套在一个 With 中吗?VBA