python 实现归并排序算法_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)

时间: 2024-10-09 05:28:37

python 实现归并排序算法_python的相关文章

Python 连连看连接算法_python

功能:为连连看游戏提供连接算法 说明:模块中包含一个Point类,该类是游戏的基本单元"点",该类包含属性:x,y,value. 其中x,y代表了该点的坐标,value代表该点的特征:0代表没有被填充,1-8代表被填充为游戏图案,9代表被填充为墙壁 模块中还包含一个名为points的Point列表,其中保存着整个游戏界面中的每个点 使用模块的时候应首先调用createPoints方法,初始化游戏界面中每个点,然后可通过points访问到每个点,继而初始化界面 模块中核心的方法是link

python 实现插入排序算法_python

复制代码 代码如下: #!/usr/bin/python def insert_sort(array): for i in range(1, len(array)): key = array[i] j = i - 1 while j >= 0 and key < array[j]: array[j + 1] = array[j] j-=1 array[j + 1] = key if __name__ == "__main__": array = [2, 4, 32, 64,

python实现排序算法_python

复制代码 代码如下: def insertion_sort(n):    if len(n) == 1:        return n    b = insertion_sort(n[1:])    m = len(b)    for i in range(m):        if n[0] <= b[i]:            return b[:i]+[n[0]]+b[i:]    return b + [n[0]]l = [1,3,4,2,6,7,9,7,12,11,789,345,

python通过BF算法实现关键词匹配的方法_python

本文实例讲述了python通过BF算法实现关键词匹配的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: #!/usr/bin/python # -*- coding: UTF-8 # filename BF import time """ t="this is a big apple,this is a big apple,this is a big apple,this is a big apple." p="apple&q

python快速查找算法应用实例_python

本文实例讲述了Python快速查找算法的应用,分享给大家供大家参考. 具体实现方法如下: import random def partition(list_object,start,end): random_choice = start #random.choice(range(start,end+1)) #把这里的start改成random()效率会更高些 x = list_object[random_choice] i = start j = end while True: while li

Python中实现的RC4算法_python

闲暇之时,用Python实现了一下RC4算法 编码 UTF-8 class 方式 #/usr/bin/python #coding=utf-8 import sys,os,hashlib,time,base64 class rc4: def __init__(self,public_key = None,ckey_lenth = 16): self.ckey_lenth = ckey_lenth self.public_key = public_key or 'none_public_key'

JAVA实现归并排序算法

package Utils.Sort; /** *归并排序,要求待排序的数组必须实现Comparable接口 */ public class MergeSort implements SortStrategy { private Comparable[] bridge; /** *利用归并排序算法对数组obj进行排序 */ public void sort(Comparable[] obj) { if (obj == null) { throw new NullPointerException(

python选择排序算法实例总结

  本文实例总结了python选择排序算法.分享给大家供大家参考.具体如下: 代码1: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 def ssort(V): #V is the list to be sorted j = 0 #j is the "current" ordered position, starting with the first one in the list while j != len(V): #this is the replacin

Python实现LRU算法的2种方法

  这篇文章主要介绍了Python实现LRU算法的2种方法,本文分别给出了用OrderedDict实现.用dict+list实现两种方法,需要的朋友可以参考下 LRU:least recently used,最近最少使用算法.它的使用场景是:在有限的空间中存储对象时,当空间满时,会按一定的原则删除原有的对象,常用的原则(算法)有LRU,FIFO,LFU等.在计算机的Cache硬件,以及主存到虚拟内存的页面置换,还有Redis缓存系统中都用到了该算法.我在一次面试和一个笔试时,也遇到过这个问题.