将快速排序函数转换为类?

2024-10-04 01:28:13 发布

您现在位置:Python中文网/ 问答频道 /正文

作为我家庭作业的一部分,我需要将这个快速排序代码转换成一个类。(我还有其他的排序算法要转换、heapsort、mergesort、bubblesort等,但是帮助这个例子可以帮助我处理其他的)

在类中,我需要计算执行的数组操作数和递归调用数(我假设这是init中的一个计数器)

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

我并不是要求在完成上述规格的情况下完全完成该类,我只是要求有人帮助我创建该类,以便完成规格,我可以确定在何处/何时添加到arrayooperations/额外的数组空间计数器。你知道吗

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

Tags: 算法return排序计数器空间数组arraysmall
1条回答
网友
1楼 · 发布于 2024-10-04 01:28:13

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

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

相关问题 更多 >