我正在完成一项家庭作业,我将使用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方法创建多个迭代器,以便一次跟踪多个位置。但我不知道如何编写代码。
请给我一些提示。