楼主: Nicolle
797 43

【独家发布】All Algorithms implemented in Python [推广有奖]

版主

巨擘

0%

还不是VIP/贵宾

-

TA的文库  其他...

Python Programming

SAS Programming

Must-Read Books

威望
16
论坛币
12348981 个
学术水平
2941 点
热心指数
2952 点
信用等级
2756 点
经验
447321 点
帖子
20138
精华
91
在线时间
7733 小时
注册时间
2005-4-23
最后登录
2019-5-16

楼主
Nicolle 学生认证  发表于 2019-5-8 09:02:12 |只看作者 |倒序
本帖最后由 Nicolle 于 2019-5-8 09:03 编辑

【导语】
  1. 数据结构与算法是所有人都要学习的基础课程,自己写算法的过程可以帮助我们更好地理解算法思路,不要轻视每一个算法,一些虽然看似容易,但可能有很多坑。但是坑还是要自己一个一个踩过来的,而且也只有自己踩过坑,才能让自己从理论到技能都得到提升。为了帮助大家在这个假期能提高学习效率,进阶 Python 技能,为大家推荐了一份用 Python代码实现算法的资源帖,涵盖从入门到高级的各类算法。
复制代码

本帖隐藏的内容

All Algorithms implemented in Python.zip (6.63 MB)




已有 1 人评分经验 收起 理由
arthistory4 + 1 精彩帖子

总评分: 经验 + 1   查看全部评分

本帖被以下文库推荐

stata SPSS
沙发
Nicolle 学生认证  发表于 2019-5-8 09:04:53 |只看作者
Bubble Sort
  1. ALGORITHM:

  2. for i = 1:n,
  3.     swapped = false
  4.     for j = n:i+1,
  5.         if a[j] < a[j-1],
  6.             swap a[j,j-1]
  7.             swapped = true
  8.     → invariant: a[1..i] in final position
  9.     break if not swapped
  10. end
  11. DISCUSSION:

  12. Bubble sort has many of the same properties as insertion sort, but has slightly higher overhead. In the case of nearly sorted data, bubble sort takes O(n) time, but requires at least 2 passes through the data (whereas insertion sort requires something more like 1 pass).
  13. KEY:

  14. Black values are sorted.
  15. Gray values are unsorted.
  16. A red triangle marks the algorithm position.
  17. PROPERTIES:

  18. Stable
  19. O(1) extra space
  20. O(n2) comparisons and swaps
  21. Adaptive: O(n) when nearly sorted
复制代码
藤椅
liuxf666 发表于 2019-5-8 09:13:39 |只看作者
thanks!
板凳
ekscheng 发表于 2019-5-8 09:33:17 |只看作者
报纸
Nicolle 学生认证  发表于 2019-5-8 10:05:53 |只看作者
bisection.py
  1. import math


  2. def bisection(function, a, b):  # finds where the function becomes 0 in [a,b] using bolzano

  3.     start = a
  4.     end = b
  5.     if function(a) == 0:  # one of the a or b is a root for the function
  6.         return a
  7.     elif function(b) == 0:
  8.         return b
  9.     elif function(a) * function(b) > 0:  # if none of these are root and they are both positive or negative,
  10.         # then his algorithm can't find the root
  11.         print("couldn't find root in [a,b]")
  12.         return
  13.     else:
  14.         mid = (start + end) / 2
  15.         while abs(start - mid) > 10**-7:  # until we achieve precise equals to 10^-7
  16.             if function(mid) == 0:
  17.                 return mid
  18.             elif function(mid) * function(start) < 0:
  19.                 end = mid
  20.             else:
  21.                 start = mid
  22.             mid = (start + end) / 2
  23.         return mid


  24. def f(x):
  25.     return math.pow(x, 3) - 2*x - 5

  26. if __name__ == "__main__":
  27.     print(bisection(f, 1, 1000))
复制代码
地板
Nicolle 学生认证  发表于 2019-5-8 10:07:30 |只看作者
intersection.py
  1. import math

  2. def intersection(function,x0,x1): #function is the f we want to find its root and x0 and x1 are two random starting points
  3.     x_n = x0
  4.     x_n1 = x1
  5.     while True:
  6.         x_n2 = x_n1-(function(x_n1)/((function(x_n1)-function(x_n))/(x_n1-x_n)))
  7.         if abs(x_n2 - x_n1) < 10**-5:
  8.             return x_n2
  9.         x_n=x_n1
  10.         x_n1=x_n2

  11. def f(x):
  12.     return math.pow(x , 3) - (2 * x) -5

  13. if __name__ == "__main__":
  14.     print(intersection(f,3,3.5))
复制代码
7
Nicolle 学生认证  发表于 2019-5-8 10:08:58 |只看作者
lu_decomposition.py
  1. # lower–upper (LU) decomposition - https://en.wikipedia.org/wiki/LU_decomposition
  2. import numpy

  3. def LUDecompose (table):
  4.     # Table that contains our data
  5.     # Table has to be a square array so we need to check first
  6.     rows,columns=numpy.shape(table)
  7.     L=numpy.zeros((rows,columns))
  8.     U=numpy.zeros((rows,columns))
  9.     if rows!=columns:
  10.         return []
  11.     for i in range (columns):
  12.         for j in range(i-1):
  13.             sum=0
  14.             for k in range (j-1):
  15.                 sum+=L[i][k]*U[k][j]
  16.             L[i][j]=(table[i][j]-sum)/U[j][j]
  17.         L[i][i]=1
  18.         for j in range(i-1,columns):
  19.             sum1=0
  20.             for k in range(i-1):
  21.                 sum1+=L[i][k]*U[k][j]
  22.             U[i][j]=table[i][j]-sum1
  23.     return L,U

  24. if __name__ == "__main__":
  25.     matrix =numpy.array([[2,-2,1],
  26.                          [0,1,2],
  27.                          [5,3,1]])
  28.     L,U = LUDecompose(matrix)
  29.     print(L)
  30.     print(U)
复制代码
8
sqy 发表于 2019-5-8 10:27:46 |只看作者
All Algorithms implemented in Python !
9
HappyAndy_Lo 发表于 2019-5-8 10:29:16 |只看作者
10
albertwishedu 发表于 2019-5-8 10:48:06 |只看作者
您需要登录后才可以回帖 登录 | 我要注册

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2019-5-16 16:45