如何使用forward迭代器实现选择排序?

时间:2015-04-04 20:36:49

标签: python

我正在完成一项家庭作业,我将使用python列表和链接列表(单个)的前向迭代器实现选择排序。

以下是迭代器的一些代码:

from abc import *

class ForwardIterator(metaclass=ABCMeta):
    @abstractmethod
    def getNext(self):
        return

    @abstractmethod
    def getItem(self):
        return

    @abstractmethod
    def getLoc(self):
        return

    @abstractmethod
    def clone(self):
        return

    def __eq__(self, other):
        return self.getLoc() == other.getLoc()

    def __ne__(self, other):
        return not (self == other)

    def __next__(self):
        if self.getLoc() == None:
            raise StopIteration
        else:
            item = self.getItem()
            self.getNext()
            return item

class ForwardAssignableIterator(ForwardIterator):
    @abstractmethod
    def setItem(self, item):
        """Sets the item at the current position."""
        return

class PythonListFAIterator(ForwardAssignableIterator):
    def __init__(self, lst, startIndex):
        self.lst = lst
        self.curIndex = startIndex

    def getNext(self):
        self.curIndex += 1

    def getItem(self):
        if self.curIndex < len(self.lst):
            return self.lst[self.curIndex]
        else:
            return None

    def setItem(self, item):
        if self.curIndex < len(self.lst):
            self.lst[self.curIndex] = item

    def getLoc(self):
        if self.curIndex < len(self.lst):
            return self.curIndex
        else:
            return None

    def clone(self):
        return PythonListFAIterator(self.lst, self.curIndex)

LinkedListFAIterator类似于PythonListFAIterator,加上getStartIterator__iter__方法。

我不知道如何用一个paraemter,一个FAIterator(前向迭代器)编写代码来实现选择排序。请帮我。我知道我将找到最小元素并将其放在列表的开头。我也知道我将使用clone方法创建多个迭代器,以便一次跟踪多个位置。但我不知道如何编写代码。

请给我一些提示。

0 个答案:

没有答案