Python 我实现合并排序时出错了吗?
下面是我对合并排序的实现Python 我实现合并排序时出错了吗?,python,mergesort,Python,Mergesort,下面是我对合并排序的实现 lis=list() lis=[9,0,5,1,8,3,7,2,6,4] def merge(lis,l,m,r): i=l j=m n1=m-1-l n2=r-m temp=list() while(i<=n1 and j<=n2): if(lis[i]<lis[j]): t
lis=list()
lis=[9,0,5,1,8,3,7,2,6,4]
def merge(lis,l,m,r):
i=l
j=m
n1=m-1-l
n2=r-m
temp=list()
while(i<=n1 and j<=n2):
if(lis[i]<lis[j]):
temp.append(lis[i])
i+=1
else:
temp.append(lis[j])
j+=1
while(i<=n1):
temp.append(lis[i])
i+=1
while(j<=n2):
temp.append(lis[j])
j+=1
for k in range(len(temp)):
lis[l+k]=temp[k]
def mergesort(lis,l,r):
if(l<r):
m=(l+r)//2
mergesort(lis,l,m)
mergesort(lis,m+1,r)
merge(lis,l,m,r)
mergesort(lis,0,9)
print(lis)
lis=list()
lis=[9,0,5,1,8,3,7,2,6,4]
def合并(lis、l、m、r):
i=l
j=m
n1=m-1-l
n2=r-m
temp=list()
而(i在这里,它是固定和整洁的版本-
def merge(lis, l, m, r):
n1 = m - l + 1
n2 = r- m
L = [0] * (n1)
R = [0] * (n2)
for i in range(0 , n1):
L[i] = lis[l + i]
for j in range(0 , n2):
R[j] = lis[m + 1 + j]
i,j,k=0,0,l
while i < n1 and j < n2 :
if L[i] <= R[j]:
lis[k] = L[i]
i += 1
else:
lis[k] = R[j]
j += 1
k += 1
while i < n1:
lis[k] = L[i]
i += 1
k += 1
while j < n2:
lis[k] = R[j]
j += 1
k += 1
def mergesort(lis,l,r):
if l < r:
m = (l+(r-1))//2
mergesort(lis, l, m)
mergesort(lis, m+1, r)
merge(lis, l, m, r)
lis=[9,0,5,1,8,3,7,2,6,4]
mergesort(lis,0,len(lis)-1)
print(lis)
def合并(lis、l、m、r):
n1=m-l+1
n2=r-m
L=[0]*(n1)
R=[0]*(n2)
对于范围(0,n1)内的i:
L[i]=lis[L+i]
对于范围(0,n2)内的j:
R[j]=lis[m+1+j]
i、 j,k=0,0,l
当i 如果L[i]在这里,它是固定且整洁的版本-
def merge(lis, l, m, r):
n1 = m - l + 1
n2 = r- m
L = [0] * (n1)
R = [0] * (n2)
for i in range(0 , n1):
L[i] = lis[l + i]
for j in range(0 , n2):
R[j] = lis[m + 1 + j]
i,j,k=0,0,l
while i < n1 and j < n2 :
if L[i] <= R[j]:
lis[k] = L[i]
i += 1
else:
lis[k] = R[j]
j += 1
k += 1
while i < n1:
lis[k] = L[i]
i += 1
k += 1
while j < n2:
lis[k] = R[j]
j += 1
k += 1
def mergesort(lis,l,r):
if l < r:
m = (l+(r-1))//2
mergesort(lis, l, m)
mergesort(lis, m+1, r)
merge(lis, l, m, r)
lis=[9,0,5,1,8,3,7,2,6,4]
mergesort(lis,0,len(lis)-1)
print(lis)
def合并(lis、l、m、r):
n1=m-l+1
n2=r-m
L=[0]*(n1)
R=[0]*(n2)
对于范围(0,n1)内的i:
L[i]=lis[L+i]
对于范围(0,n2)内的j:
R[j]=lis[m+1+j]
i、 j,k=0,0,l
当i
'''
n=int(input("Enter number of elements: "))
lis=list()
for i in range(n):
lis.append(int(input("Enter element "+str(i+1)+": ")))
'''
lis=list()
lis=[9,0,5,1,8,3,7,2,6,4]
def merge(lis, l,m,r):
i,j=l,m+1
n1,n2=m,r
srt=list()
while(i<=n1 and j<=n2):
if(lis[i]<lis[j]):
srt.append(lis[i])
i+=1
else:
srt.append(lis[j])
j+=1
while (i<=n1):
srt.append(lis[i])
i+=1
while (j<=n1):
srt.append(lis[j])
j+=1
m=l
for k in srt:
lis[m]=k
m+=1
def mergesort(lis,l,r):
if(l<r):
m=(l+r)//2
mergesort(lis,l,m)
mergesort(lis,m+1,r)
merge(lis,l,m,r)
mergesort(lis,0,9)
print(lis)
“”
n=int(输入(“输入元素数:”)
lis=列表()
对于范围(n)中的i:
lis.append(int(输入(“输入元素”+str(i+1)+“:”))
'''
lis=列表()
lis=[9,0,5,1,8,3,7,2,6,4]
def合并(lis、l、m、r):
i、 j=l,m+1
n1,n2=m,r
srt=list()
而(我在这里做的
'''
n=int(input("Enter number of elements: "))
lis=list()
for i in range(n):
lis.append(int(input("Enter element "+str(i+1)+": ")))
'''
lis=list()
lis=[9,0,5,1,8,3,7,2,6,4]
def merge(lis, l,m,r):
i,j=l,m+1
n1,n2=m,r
srt=list()
while(i<=n1 and j<=n2):
if(lis[i]<lis[j]):
srt.append(lis[i])
i+=1
else:
srt.append(lis[j])
j+=1
while (i<=n1):
srt.append(lis[i])
i+=1
while (j<=n1):
srt.append(lis[j])
j+=1
m=l
for k in srt:
lis[m]=k
m+=1
def mergesort(lis,l,r):
if(l<r):
m=(l+r)//2
mergesort(lis,l,m)
mergesort(lis,m+1,r)
merge(lis,l,m,r)
mergesort(lis,0,9)
print(lis)
“”
n=int(输入(“输入元素数:”)
lis=列表()
对于范围(n)中的i:
lis.append(int(输入(“输入元素”+str(i+1)+“:”))
'''
lis=列表()
lis=[9,0,5,1,8,3,7,2,6,4]
def合并(lis、l、m、r):
i、 j=l,m+1
n1,n2=m,r
srt=list()
虽然(iyes做了那件事仍然没有Sorty做了那件事仍然没有Sortp请不要粘贴Geeksforgeks的代码,我想知道我自己的错误请不要粘贴Geeksforgeks的代码,我想知道我自己的错误看起来像是你修复了你的代码。唯一的挑战是你如何设置I、j、n1和n2值。第一个子数组必须是从l到m,第二个子数组d子数组必须从m+1到r。换句话说,i到n1,j到n2。很好,你能够自己修复它。你很荣幸。看起来你修复了你的代码。唯一的挑战是如何设置i,j,n1和n2值。第一个子数组必须从l到m,第二个子数组必须从m+1到r。换句话说,i到n1,j到n2。开始你自己能修好,真是太好了。