# coding:utf-8<br># 下面是归并排序 中 出现的一些语法的错误<br>def MergeSort(<a href="https://www.gaodaima.com/tag/array" title="查看更多关于array的文章" target="_blank">array</a>: [], startIndex: int, endIndex: int):<br> if startIndex >= endIndex:<br> return<br> # mid = (startIndex + endIndex)//2 +1<br> mid = startIndex + (endIndex - startIndex) // 2 #python // 才能表示整除 使用 / 会出现float类型<br> MergeSort(array, startIndex, mid)<br> MergeSort(array, mid + 1, endIndex)<br> Merge(array, startIndex, mid, endIndex)<br><br><br>def Merge(array: [], startIndex: int, mid: int, endIndex: int):<br> tempLi = []<br> # mid = startIndex + (endIndex - startIndex) / 2<br> # mid = (startIndex + endIndex) / 2<br> p = 0<br> p1 = startIndex<br> p2 = mid + 1<br> while p1 <= mid and p2 <= endIndex:<br> if array[p1] <= array[p2]:<br> tempLi.append(array[p1])<br> p += 1<br> p1 += 1<br><br> else:<br> tempLi.append(array[p2])<br> p += 1<br> p2 += 1<br><br> while p1 <= mid:<br> tempLi.append(array[p1])<br> # tempLi[p] = array[p1]<br> p += 1<br> p1 += 1<br> while p2 <= endIndex:<br> tempLi.append(array[p2])<br> #当tempLi为空的时候 ,不能通过下标来索引<br> # tempLi[p] = array[p2]<br> p += 1<br> p2 += 1<br> for i in range(0, tempLi.__len__()):<br> array[startIndex + i] = tempLi[i]<br><br><br>if __name__ == "__main__":<br> from random import randint<br><br> array = [randint(1, 10) for i in range(10)]<br> print(f"原来的:{array}")<br> MergeSort(array, 0, array.__len__() - 1)<br> print(f"现在的:{array}")
www#gaodaima.com来源gaodai#ma#com搞@代~码网搞代码