我已经在python中编写了快速排序代码,但是这段代码引发了错误。
----------
k=0
def partition(arr,low_index,high_index):
key = arr[low_index]
i = low_index + 1;
j = high_index
while True:
while (i<high_index and key>=arr[i]):
i+=1
while (key<arr[j]):
j-=1
if i<j:
arr[i,j] = arr[j,i]
else:
arr[low_index,j]=arr[j,low_index]
return j
def quicksort(arr,low_index,high_index):
if low_index < high_index:
j = partition(low_index,high_index,arr)
print("Pivot element with index "+str(j)+" has thread "+str(k))
if left<j:
k=k+1
quicksort(arr,low_index, j - 1)
if i<right:
k=k+1
quicksort(arr,j+1,high_index)
return arr
n = input("Enter the value n ")
arr=input("Enter the "+str(n)+" no. of elements ")
brr=quicksort(arr,0,n-1)
print("Elements after sorting are "+str(brr))
----------
它抛出的错误是
输入值n 4
输入4号。元素[5,6,2,7] Traceback(最近一次调用最后一次): 文件“C:\ Users \ devendrabhat \ Documents \ dev \ dev \ quick.py”,第38行,in BRR =快速排序(ARR,0,N-1) TypeError:不支持的操作数类型 - :'str'和'int'
答案 0 :(得分:1)
您需要将n更改为整数,而不是字符串。您的错误告诉您,您正在尝试对字符串和整数执行操作(在本例中)。将str(n)
更改为int(n)
,以便您始终拥有相同的类型。
答案 1 :(得分:1)
你宣布&#39; n&#39;在你的代码中作为字符串。并尝试使用字符串执行算术运算。
所以它给出了这个错误。将此str(n)
更改为int(n)
。
它会起作用!!!
答案 2 :(得分:0)
n是字符串。所以你需要将它改为int:
n = int(n)
如果在第37行输入[5,6,2,7],python会将其解释为&#34; [5,6,2,7]&#34;等字符串。 因此,您需要将字符串转换为列表。
arr = eval(arr)