python 实现归并排序算法

yipeiwu_com6年前Python基础
理论不多说:
复制代码 代码如下:

#!/usr/bin/python
import sys

def merge(array, q, p, r):
left_array = array[q:p+1]
right_array = array[p+1:r+1]

left_array_num = len(left_array)
right_array_num = len(right_array)

i, j , k= [0, 0, q]
while i < left_array_num and j < right_array_num:
if (left_array[i] < right_array[j]):
array[k] = left_array[i]
i+=1
else:
array[k] = right_array[j]
j+=1
k+=1

while i < left_array_num:
array[k] = left_array[i];
k+=1
i+=1

while j < right_array_num:
array[k] = right_array[j]
k+=1
j+=1

def merge_sort(array, q, r):
if q < r:
p = (q + r) / 2
merge_sort(array, q, p)
merge_sort(array, p + 1, r)
merge(array, q, p, r)

if __name__ == "__main__":
array = [2, 45, 5, 7, 34, 456, 345, 89, 8, 1, 341, 4, 98, 67]
merge_sort(array, 0, len(array) - 1)

for a in array:
sys.stdout.write("%d " % a)

相关文章

python实现kMeans算法

聚类是一种无监督的学习,将相似的对象放到同一簇中,有点像是全自动分类,簇内的对象越相似,簇间的对象差别越大,则聚类效果越好。 1、k均值聚类算法 k均值聚类将数据分为k个簇,每个簇通...

详解Python验证码识别

以前写过一个刷校内网的人气的工具,Java的(以后再也不行Java程序了),里面用到了验证码识别,那段代码不是我自己写的:-) 校内的验证是完全单色没有任何干挠的验证码,识别起来比较容易...

python项目对接钉钉SDK的实现

python项目对接钉钉SDK的实现

 钉钉SDK 对接sdk还是遇到不少问题的 钉钉python版SDK文档地址:https://dingtalk-sdk.readthedocs.io/zh_CN/lates...

python3中str(字符串)的使用教程

本文主要介绍的是python3中对str(字符串)的使用操作总结,文中介绍的非常详细,需要的朋友们下面来一起看看吧。 __add__函数 (在后面追加字符串) s1 ='Hello'...

Python PIL读取的图像发生自动旋转的实现方法

对于手机、相机等设备拍摄的照片,由于手持方向的不同,拍出来的照片可能是旋转0°、90°、180°和270°。即使在电脑上利用软件将其转正,他们的exif信息中还是会保留方位信息。 在用P...