算法与密码学基础:从排序到加密的全面解析
1. 排序算法——冒泡排序
冒泡排序是常见排序算法中效率较低的一种。其工作原理是在列表中,较大的值“上浮”到列表末尾,较小的值“下沉”到列表开头,故而得名。在最佳情况下(列表已经有序),冒泡排序的复杂度接近常数 n;一般情况下,复杂度为 O(n²)。尽管它速度较慢,但由于实现简单,仍被广泛使用。许多对算法效率和分析理解不够深入的程序员会依赖冒泡排序。
2. 欧几里得算法
欧几里得算法用于求两个整数的最大公约数。对于大数而言,这并非易事,且该算法在后续要学习的密码学中会发挥作用。算法步骤如下:
设 k 为算法步骤的计数,从 0 开始。初始步骤对应 k = 0,后续依次为 k = 1, k = 2, k = 3 等。在第一步之后,每一步都以前一步的两个余数 rk - 1 和 rk - 2 开始,且每一步的余数都小于前一步的余数,即 rk - 1 < rk - 2。第 k 步的目标是找到商 qk 和余数 rk,满足公式 (r_{k - 2}=q_{k}r_{k - 1}+r_{k}),其中 (r_{k}<r_{k - 1})。
例如,求 gcd(2322, 654):
- (2322 = 654 * 3 + 360),则 gcd(2322, 654) = gcd(654, 360)
- (654 = 360 * 1 + 294),则 gcd(654, 360) = gcd(360, 294)
- (360 = 294 * 1 + 66),则 gcd(360, 294) = gcd(294, 66)
- (294 = 66 * 4 + 30),则 gcd(294
超级会员免费看
订阅专栏 解锁全文
1596

被折叠的 条评论
为什么被折叠?



