这里是归并排序的代码.. 该代码能够很好地工作,并对数字进行排序。但是如果我们使用需要排序的更大数据,那么就会出现一些问题。要排序的数据包含不重复的数字。但在排序之后,有某些数字被重复多次。我不明白为什么会这样。而且,当我给定一个包含100000个数字的数据集时,就会出现这种情况。如果是较小的数据,该代码会很好地工作。
def mergeSort(alist):
if len(alist)>1:
mid = len(alist)/2
lefthalf = alist[:mid]
righthalf = alist[mid:]
mergeSort(lefthalf)
mergeSort(righthalf)
i=0
j=0
k=0
while i<len(lefthalf) and j<len(righthalf):
if lefthalf[i]<righthalf[j]:
alist[k]=lefthalf[i]
i=i+1
else:
alist[k]=righthalf[j]
j=j+1
k=k+1
while i<len(lefthalf):
alist[k]=lefthalf[i]
i=i+1
k=k+1
while j<len(righthalf):
alist[k]=righthalf[j]
j=j+1
k=k+1
print("select the file: ")
file_name = tkFileDialog.askopenfile(mode='r', title='Select word list file')
inv_data = np.loadtxt(file_name,dtype='float', comments='#', delimiter=None, converters=None, skiprows=0, usecols=None,
unpack=False, ndmin=0)
mergeSort(inv_data)
print("sorted list :", inv_data)
数据集在下面链接中:http://spark-public.s3.amazonaws.com/algo1/programming_prob/IntegerArray.txt。它涉及到IT技术方面的内容。
`mergeSort(t)` `print len(set(t))`
我没有使用您的文件读取方法,因此问题可能出在那里。 - user189