数据结构与算法分析:C语言描述

此文章不定期更新,内容为《数据结构与算法分析:C语言描述》书中程序分析并使用python实现,作为个人读书笔记。

1.求最大子串

题目描述:给定序列 x 1 , x 2 , x 3 , . . . , x n x_1, x_2, x_3, ..., x_n x1,x2,x3,...,xn,找出其中的最大子串 m a x i j = x i + x i + 1 + . . . + x j max_{ij} = x_i + x_{i+1} + ... + x_j maxij=xi+xi+1+...+xj,返回 m a x i j max_{ij} maxij值。
代码描述 O ( N ) O(N) O(N)复杂度实现,依次遍历数组,记录下当前位置最大和值,如果小于0,则抛弃。

def MaxSubSequenceSum(arr):
	max_sum = curr_sum = 0
 	for i in range(len(arr)):
 		curr_sum += arr[i]
 		curr_sum = max(curr_sum, 0)
 		max_sum = max(max_sum, curr_sum)
	return max_sum
2.欧基里德算法求最大公约数

题目描述:假设 M > = N M >= N M>=N,求 M M M N N N的最大公约数。
代码描述:约 O ( l o g N ) O(logN) O(logN)复杂度。 N N N大于零时, M M M N N N的最大公约数与 N N N M % N M \% N M%N的最大公约数相同。

def Gcd(M, N):
	while N > 0:
		rem = M % N
		M = N
		N = rem
	return M

你可能感兴趣的:(数据结构与算法分析)