首页 > 其他分享 >归并排序

归并排序

时间:2022-10-18 22:12:15浏览次数:62  
标签:mergesort 归并 seq len 排序 def

def mergesort(seq):
    """归并排序"""
    if len(seq) <= 1:
        return seq
    mid = len(seq) / 2  # 将列表分成更小的两个列表
    # 分别对左右两个列表进行处理,分别返回两个排序好的列表
    left = mergesort(seq[:mid])
    right = mergesort(seq[mid:])
    # 对排序好的两个列表合并,产生一个新的排序好的列表
    return merge(left, right)

def merge(left, right):
    """合并两个已排序好的列表,产生一个新的已排序好的列表"""
    result = []  # 新的已排序好的列表
    i = 0  # 下标
    j = 0
    # 对两个列表中的元素 两两对比。
    # 将最小的元素,放到result中,并对当前列表下标加1
    while i < len(left) and j < len(right):
        if left[i] <= right[j]:
            result.append(left[i])
            i += 1
        else:
            result.append(right[j])
            j += 1
    result += left[i:]
    result += right[j:]
    return result

seq = [5,3,0,6,1,4]
print '排序前:',seq
result = mergesort(seq)
print '排序后:',result

思路就是合并两个有序的数组,之后递归调用

标签:mergesort,归并,seq,len,排序,def
From: https://www.cnblogs.com/bernieloveslife/p/16804389.html

相关文章

  • Java 快速排序之一的 冒泡排序 效率较低 但是对新手比较友好
    packagetest;importjava.util.Scanner;importjava.util.Arrays;//把数组的内容全打印出来,并且加上中括号而且中间自己加入逗号。publicclassDay_19{publicstaticvo......
  • 数据结构——————排序算法代码实现(未完待续......)
    排序算法插入排序折半插入排序希尔排序冒泡排序快速排序简单选择排序堆排序归并排序(未完成)基数排序(未完成)#include<bits/stdc++.h>usingnamespacestd;constintMAXN......
  • 快速排序
    11//定义数列,左位,右位13空表返回空值15定义左下标右下标16定义中心轴17中心轴初始位置是在数列最左边19最右边值大于中心轴的值时21最右边的下标往左移一位25最右边的值放......
  • javascript对象数组内元素排序
    数组内对象排序数组项是对象,需要根据数组项的某个属性对数组进行排序。注意:想往后排的,后面的-前面的  a.age-b.age,如果是从小到大排序,大的-小的letperson=[......
  • 1045 快速排序(JAVA)
    著名的快速排序算法里有一个经典的划分过程:我们通常采用某种方法取一个元素作为主元,通过交换,把比主元小的元素放到它的左边,比主元大的元素放到它的右边。给定划分后的N个......
  • C#:插入排序
    对于给定的一组记录,初始时假设第一个记录自成一个有序序列,其余的记录为无序序列。接着从第二个记录开始,按照记录的大小依次将当前处理的记录插入到其之前的有序序列中,直至......
  • [数据结构与算法 (Kotlin 语言)] 1.冒泡排序(Bubble Sort)
    算法简介冒泡排序(BubbleSort),是一种计算机科学领域的较简单的排序算法。这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮......
  • 冒泡排序与选择排序
    冒泡排序与选择排序冒泡排序:自我理解:跟水底的泡泡一样,远处的泡泡越来越多,确定远处的泡泡,排列成行基本代码:准备代码:基础使用的为红框处的代码处理代码:顺......
  • E10——凭证报表序号按流水自然排序
            introwIndex;privatevoidGroupHeader1_AfterPrint(objectsender,System.EventArgse){rowIndex=0;}privatevoidtableCell1_......
  • java 集合对象排序
    关于集合内部排序,采用comparator方法做:1.按属性数字大小排序:点击查看代码taskBoxs.sort(newComparator<TCComponent>(){ @Override publicintcompare(TCCom......