##归并排序

##基本思想:对于两个排好序的数组A和B,逐一比较A和B的元素,将较小值放入数组C中,当A或者B数组元素查询完后,将A或者B剩余的元素直接添加到C数组中,此时C数组即为有序数组,这就是归并排序原理

##step1:对于一个无序数组A,可以取A元素中间索引,将A数组分为两个部分A1,A2;

##step2:递归A1,A2,分别将A1,A2分为A11,A12和A21,A22两部分直至只有一个元素;

##step3:对于只有一个元素的数组来讲,其是有序的,因此,对于两个只有一个元素的数组,可以根据基本思想所述合成一个数组C,最后得到有序数组

代码如下:

##归并排序
def merge(left, right):
l = 0
r = 0
result = []
while l < len(left) and r < len(right):
if left[l] < right[r]:
result.append(left[l])
l += 1
else:
result.append(right[r])
r += 1
result += left[l:]
result += right[r:]
return result def mergesort(array):
if len(array) <= 1:
return array
num = int(len(array)/2)
left = mergesort(array[:num])
right = mergesort(array[num:])
return merge(left, right) if __name__ == '__main__':
b = [1, 22, 90, 4, 65, 3, 73, 8]
print(b)
a = mergesort(b)
print(a)

  

最新文章

  1. 魅族M8时期写过几个app,纪念一下曾经的自己
  2. [Asp.net 开发系列之SignalR篇]专题四:使用SignalR实现发送图片
  3. Java 毫秒转换为日期类型、日期转换为毫秒
  4. ACM Longest Repeated Sequence
  5. android 学习随笔六(网络要求及配置)
  6. (easy)LeetCode 223.Rectangle Area
  7. [Everyday Mathematics]20150302
  8. 第一章 响应式设计之Media Quer
  9. Javascript之基本包装类型
  10. ssh+c3p0调用存储过程、组拼STRUCT时仅使用一个connection的方法 c3p0代理类转原始类(connection)
  11. table转list
  12. 常用SQL的优化
  13. Home · chineking/cola Wiki
  14. get和post方式请求数据,jsonp
  15. Java进阶(八)Java加密技术之对称加密 非对称加密 不可逆加密算法
  16. new-delete-malloc-free关系总结
  17. WebApi 后台获取token值
  18. Fatal error: ENOSPC: System limit for number of file watchers reached
  19. 获取sql 时间时分秒
  20. JSONObject的toBean 和 fromObject

热门文章

  1. UE4 Socket多线程非阻塞通信
  2. 5 Steps to Getting Started with SharePoint Development
  3. Spqrk笔记
  4. Java - 25 Java 包(package)
  5. mybatis基于注解形式的多数据源
  6. java的Map遍历
  7. 正则表达式-使用说明Regular Expression How To (Perl, Python, etc)
  8. CopyOnWriteList-JDK1.8
  9. MYSQL 优化常用方法(转载)
  10. &lt;转载&gt;AWS 基础知识