python归并排序理解不了_归并排序中发现的一些坑python3.8中 li =[] li[0] = 1 出错

# coding:utf-8

# 下面是归并排序 中 出现的一些语法的错误

def MergeSort(array: [], startIndex: int, endIndex: int):

if startIndex >= endIndex:

return

# mid = (startIndex + endIndex)//2 +1

mid = startIndex + (endIndex - startIndex) // 2 #python // 才能表示整除 使用 / 会出现float类型

MergeSort(array, startIndex, mid)

MergeSort(array, mid + 1, endIndex)

Merge(array, startIndex, mid, endIndex)

def Merge(array: [], startIndex: int, mid: int, endIndex: int):

tempLi = []

# mid = startIndex + (endIndex - startIndex) / 2

# mid = (startIndex + endIndex) / 2

p = 0

p1 = startIndex

p2 = mid + 1

while p1 <= mid and p2 <= endIndex:

if array[p1] <= array[p2]:

tempLi.append(array[p1])

p += 1

p1 += 1

else:

tempLi.append(array[p2])

p += 1

p2 += 1

while p1 <= mid:

tempLi.append(array[p1])

# tempLi[p] = array[p1]

p += 1

p1 += 1

while p2 <= endIndex:

tempLi.append(array[p2])

#当tempLi为空的时候 ,不能通过下标来索引

# tempLi[p] = array[p2]

p += 1

p2 += 1

for i in range(0, tempLi.__len__()):

array[startIndex + i] = tempLi[i]

if __name__ == '__main__':

from random import randint

array = [randint(1, 10) for i in range(10)]

print(f"原来的:{array}")

MergeSort(array, 0, array.__len__() - 1)

print(f"现在的:{array}")

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值