zoukankan      html  css  js  c++  java
  • 《算法导论》描述算法python说#1

    本文所有伪代码参考自《算法导论(原书第三版)》Thomas H.Cormen等著,殷建平等译,机械工业出版社。

    第2章 算法基础

    分治排序

    之前上ACM课的时候老师讲过,学长也讲过,至于没听进去就怪M_E了,其实还是要怪太依赖STL。

    这次重新理解+拿Python写了一下,被python的list中C++的vector化有点小坑。

     1 import math
     2 def Merge(A,p,q,r):
     3     n1 = q-p+1
     4     n2 = r-q
     5     L = []
     6     R = []
     7     for i in range(n1) :
     8         L.append(A[p+i])
     9     for j in range(n2) :
    10         R.append(A[q+j+1])
    11     L.append(float("inf"))
    12     R.append(float("inf"))
    13     i = 0
    14     j = 0
    15     for k in range(p,r+1):
    16         if L[i] <= R[j]:
    17             A[k] = L[i]
    18             i = i+1
    19         else:
    20             A[k] = R[j]
    21             j = j+1
    22     #del L[:]
    23     #del R[:]
    24     
    25 
    26 def Merge_Sort(A,p,r):
    27     if p < r:
    28         q = math.floor((p+r)/2)
    29         Merge_Sort(A,p,q)
    30         Merge_Sort(A,q+1,r)
    31         Merge(A,p,q,r)
    32 
    33 
    34 arr=[1,6,3,2,777,10]
    35 Merge_Sort(arr,0,5)
    36 print(arr)
  • 相关阅读:
    16-异常
    Linux 常用命令
    项目依赖子项目的类
    Struts2
    博客园【上吊猫】
    LayUI【基本使用】
    idea中隐藏.iml文件
    Session 使用
    博客园右下角看板娘特效,多种样式可选
    枚举
  • 原文地址:https://www.cnblogs.com/tudouuuuu/p/11608857.html
Copyright © 2011-2022 走看看