【问题标题】:Problems with MergeSort in Python-3Python-3 中的 MergeSort 问题
【发布时间】:2018-04-04 17:28:40
【问题描述】:

我在 Python-3.x 中遇到了 MergeSort 的问题。这是算法不进行排序。我的错误是什么?你能帮帮我吗?

代码是:

def mergeSort(lista):
	#Precondición: elem comparables
	#Postcondición: lista ordenada
	if len(lista) < 2:
		return lista
	medio = len(lista) // 2
	izq = mergeSort(lista[:medio])
	der = mergeSort(lista[medio:])
	return merge(izq,der)

def merge(lista1,lista2):
	#Precondición: listas ordenadas
	#Postcondición: retorna lista con elem de lista1 y lista2
	i,j = 0,0
	resultado = []
	while i<len(lista1) and j<len(lista2):
		if (lista1[i] < lista2[j]):
			resultado.append(lista1[i])
			i += 1
		else:
			resultado.append(lista2[j])
			j += 1
       
	resultado += lista1[i:]
	resultado += lista2[j:]
	return resultado

L = [6,7,-1,0,5,2,3,8]
mergeSort(L)
print(L)

结果是:

[6, 7, -1, 0, 5, 2, 3, 8]
[Finished in 0.2s]

【问题讨论】:

标签: python sorting mergesort


【解决方案1】:

print(mergeSort(L)) 怎么样。它给了我[-1, 0, 2, 3, 5, 6, 7, 8]

以下代码的问题是L 甚至没有被修改。 mergeSort(L)(大概)的返回值为您提供排序列表。

L = [6,7,-1,0,5,2,3,8]
mergeSort(L)
print(L)

【讨论】:

  • 是的,你完全正确,因为这并没有改变它,它只是命令它。现在我明白了。非常感谢您的回答。
猜你喜欢
  • 2020-09-29
  • 2016-02-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-24
相关资源
最近更新 更多