我正在嘗試創建一些常用算法庫,以便人們能夠輕鬆使用它們。我創建了一個名爲Compare的對象,它有一些在這些算法中很有用的方法。你如何使一個對象返回一個排序的數組而不是python中的空的數組?
代碼比較:
class Compare(list):
def __init__(self,arr):
self.arr = arr
def __compare(self,u,v):
# Compares one item of a Compare
# object to another
if u < v:
return 1
if u == v:
return 0
if u > v:
return -1
def __swap(self,arr,i,j):
# Exchanges i and j
temp = arr[i]
arr[i] = arr[j]
a[j] = temp
def __determine(self,arr):
# Determines if the array is sorted or not
for i in range(0,len(array)):
if self.__compare(arr[i], arr[i+1]) == -1:
return False
return True
def __printout(self,arr):
for i in range(0,len(array)):
return arr[i] + '\n'
def sorted(self):
if self.__determine(arr):
return True
return False
這裏的算法,一個使用這個類:
def SelectionSort(array):
try:
array = Compare(array)
for ix in range(0, len(array)):
m = ix
j = ix+1
for j in range(0,len(array)):
if array.__compare(array[j], array[m]) == -1:
m = j
array.__swap(arr, ix, m)
return array
except(TypeError) as error:
print "Must insert array for sort to work."
我遇到的問題是,每當我嘗試使用這個或任何其他算法,它返回一個空數組而不是有序數組。我不知道如何讓Compare對象返回排序後的數組。
你可以舉一個初始化比較的例子,當它返回空? – tylerthemiler 2011-12-28 22:02:51
這裏: '>>> a = [546456,0,-23,423,7,56654321,342,22,53,'d','rt'] >>> import khwarizmi >>> from khwarizmi import ( ) Khwarizmi是圖書館的名稱 – user1120032 2011-12-28 22:06:18
乍一看,我不認爲你可以進行這個調用:'array .__ compare()',因爲它會被公開使用(並且基本上被隱藏)。 – 2011-12-28 22:09:11