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

     1 # coding=UTF-8
     2 #!/usr/bin/python
     3 
     4 import sys
     5 
     6 def merge(nums, first, middle, last):
     7     "merge"
     8     #切片边界,左闭右开,从0开始
     9     lnums = nums[ first:middle+1 ]
    10     rnums = nums[ middle+1:last+1 ]
    11     lnums.append(sys.maxint)
    12     rnums.append(sys.maxint)
    13     l = 0
    14     r = 0
    15     for i in range( first, last+1 ):
    16         if lnums[l] < rnums[r]:
    17             nums[i] = lnums[l]
    18             l+=1
    19         else:
    20             nums[i] = rnums[r]
    21             r+=1
    22 
    23 def merge_sort(nums, first, last):
    24     """mergesort
    25         mergesort函数中传递的是下标,不是元素的个数
    26     """28     if first < last:
    29         middle = (first + last)/2
    30         #print "middle in loop", count, "is:", middle
    32         merge_sort(nums, first, middle)
    33         merge_sort(nums, middle+1, last)
    34         merge(nums,first, middle, last)
    35         #print "loops:",count,">>", nums
    36 
    37 
    38 
    39 if __name__ == '__main__':
    40     nums = [10, 8, 4, -1, 2, 6, 7, 3]
    41     print "nums is ", nums
    42     merge_sort(nums, 0, 7)
    43     print "merge_sort", nums

    /usr/bin/python2.7 /root/PycharmProjects/Sort/merge-sort.py
    nums is  [10, 8, 4, -1, 2, 6, 7, 3]
    merge_sort [-1, 2, 3, 4, 6, 7, 8, 10]

    Process finished with exit code 0

  • 相关阅读:
    021 顺时针打印矩阵
    020 二叉树的镜像
    019 树的子结构
    018 机器人的运动范围
    017 矩阵中的路径
    022 Jquery总结
    003 css总结
    002 html总结
    016 合并两个排序的链表
    015 反转链表
  • 原文地址:https://www.cnblogs.com/noxy/p/6219216.html
Copyright © 2011-2022 走看看