将快速排序函数转换为类



在我的部分作业中,我需要将这个快速排序代码转换为一个类。

在类中,我需要计算执行的数组操作的数量,以及递归调用(我认为这将是init中的一个计数器(

我还需要计算在执行算法时分配的额外数组空间的数量。

我并不是要求在完成上述规范的情况下完全完成这个类,我所要求的只是有人帮助我创建这个类,以满足规范,我可以确定在哪里/何时添加到数组操作/额外的数组空间计数器。

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

任意一组函数可以通过如下方式封装它们而成为类方法:

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]
...

最新更新