admin 管理员组

文章数量: 887032


2024年1月27日发(作者:java冒泡排序代码详解)

归并排序python代码

归并排序是一种经典的排序算法,其核心思想是将待排序数组分治成若干个子问题,然后将这些子问题逐一解决,最后合并成一个有序数组。Python语言可以很好地实现归并排序,下面是一段Python代码:

```

def merge_sort(arr):

if len(arr) <= 1:

return arr

middle = len(arr) // 2

left = merge_sort(arr[:middle])

right = merge_sort(arr[middle:])

return merge(left, right)

def merge(left, right):

result = []

i, j = 0, 0

while i < len(left) and j < len(right):

if left[i] <= right[j]:

(left[i])

i += 1

else:

(right[j])

j += 1

result += left[i:]

result += right[j:]

return result

```

首先,我们定义了一个merge_sort函数,它接受一个待排序的数组作为参数。如果这个数组的长度小于等于1,就返回它本身,否则就将它分成两个子问题,分别通过递归调用merge_sort函数来解决。最后,我们将两个有序的子数组通过调用merge函数合并成一个有序的数组。

接下来,我们定义了一个merge函数,它接受两个有序的数组left和right作为参数。我们使用两个指针i和j来遍历两个数组,比较left[i]和right[j]的大小,将较小的元素添加到result数组中,并递增相应的指针。如果有一个数组的元素全部加入了result数组中,我们就将剩余的元素加入到result数组中。最后,我们返回result数组作为merge_sort函数的返回值。

使用这段Python代码,我们可以很方便地对任意长度的数组进行归并排序。由于归并排序的时间复杂度为O(nlogn),所以它是一种较为高效的排序算法。

总之,Python语言可以很好地实现归并排序算法,我们只需要遵循归并排序的核心思想,将问题分治、逐一解决,并最后合并有序数组即可。


本文标签: 数组 排序 归并