zoukankan      html  css  js  c++  java
  • python 归并排序

    #!/usr/bin/python
    #coding=UTF-8
    #思路:前提是此列表的必须是已经排好序的(例如:[2,4,5,7,1,3,6,8]),
    #分为两部分 ,从开始到中间,从中间到最后开始比较,然后进行加到列表后面,肯定有一边提前结束,结束后直接将剩余的列表加入到列表中就行
    def merge(li,low,mid,high): #这里传的是索引
    	i = low 
    	j = mid+1 #获取后半部分的开始
    	ltmp = [] #将取出的值先放在的临时内存中
    	while i <= mid and j <= high:
    		if li[i] < li[j]: #如果第一部分的第i个值小于 第二部分的第j个值 则把值加入临时列表中
    			ltmp.append(li[i])
    			i +=1
    		else :
    			ltmp.append(li[j]) #否则就把 第二部分的第j个值 则把值加入临时列表中
    			j +=1
    	while i<=mid: #犹豫不确定那边有值 所以创建两个循环 将剩余的部分以循环方式添加到临时列表
    		ltmp.append(li[i])
    		i += 1
    	while j<=high:
    		ltmp.append(li[j])
    		j +=1
    
    def merge_sort(li,low,high):
    	if low < high:
    		mid = (low+high) // 2
    		merge_sort(li,low,mid)
    		merge_sort(li,mid+1,high)
    		merge(li,low,mid,high) #每次的递归后的部分已经不能在进行递归(分割)了时候进行合并,合并后即为有序的列表
    
     				
    
     #时间复杂度:O(nlogn)
     #空间复杂度 O(n) 开辟了一个新的空间
    
    
    
  • 相关阅读:
    PHP trim() 函数
    php 计算2个日期的相差天数
    php date('Y-n-j')的和date('Y-m-d')的区别
    转移服务器
    Invalid argument supplied for foreach()解决办法
    wordpress 后台忘记密码怎么办
    qrcode js插件生成微信二维码
    thinkphp5 注释
    tp5 新增完数据,获取id
    resstFul服务文件上传下载
  • 原文地址:https://www.cnblogs.com/ikai/p/11613870.html
Copyright © 2011-2022 走看看