对于我的家庭作业,我需要将此快速排序代码转换为一个类。 (我还有其他排序算法可以进行转换,heapsort,mergesort,bubblesort等,但是帮助这个示例将对其他示例有所帮助)
在该类中,我需要计算执行的数组操作和递归调用的数量(我假设这将是init内的一个计数器)
执行算法时,我还需要计算分配的额外数组空间的数量。
我并没有要求完全完成上述规格的课程,我只是想找人帮助我完成课程,以符合规格,我可以弄清楚何时何地添加到arrayoperations / extra数组空间计数器。
from random import *
def partition(array,first,last) :
print("first:",first,"last:",last)
big = first + 1
small = last
pivot = array[first]
while (big <= small) :
while (big <= last and array[big] <= pivot) :
big += 1
while array[small] > pivot :
small -= 1
if big < small :
array[small], array[big] = array[big], array[small]
array[first], array[small] = array[small], array[first]
return small
def quickSort(array,first,last) :
if first >= last :
return
pivLoc = partition(array,first,last)
quickSort(array, first, pivLoc-1)
quickSort(array, pivLoc+1, last)
return
答案 0 :(得分:0)
通过将任意一组函数封装起来,它们可以成为类方法,如下所示:
class ClassName:
def __init__(self):
pass
... # Functions go here
这当然不是超级有用,但是这就是代码的外观。
class QuickSorter:
def __init__(self):
pass
def partition(array,first,last) :
print("first:",first,"last:",last)
big = first + 1
small = last
pivot = array[first]
while (big <= small) :
while (big <= last and array[big] <= pivot) :
big += 1
while array[small] > pivot :
small -= 1
if big < small :
array[small], array[big] = array[big], array[small]
array[first], array[small] = array[small], array[first]
return small
def quickSort(array,first,last) :
if first >= last :
return
pivLoc = partition(array,first,last)
quickSort(array, first, pivLoc-1)
quickSort(array, pivLoc+1, last)
return
但是您通常需要一些数据成员,以便您的方法可以共享数据。 (这是您跟踪教授要求的指标的方式。)
class Stack:
def __init__(self, array):
self.array = []
def push(self, new):
self.array = self.array + [new]
...