算法实现过程
‘壹’ 插入排序的算法
排序算法在编程领域中起着举足轻重的作用,在目标检索、机器学习、数值计算、图像处理等领域有着广泛地应用。为了追本溯源,公众号特推出常用经典排序算法系列推文,让小伙伴们深入了解排序算法的实现原理,同时也提升matlab编程能力。
插入排序算法,它是将无序序列分成两部分,一部分为假设已经排列完成的序列,另一部分为余下序列,将余下序列中的元素取出插入到已排列完成的序列中,依次比较确定插入位置,下面就一起来看看该算的实现原理吧。
插入排序算法实现过程(以升序排列为例):
对于长度为N的无序数组A,假定序列A(1)为排列完成的序列K,将A(2)与A(1)作比较,如果A(2)<A(1),则两者交换,否则保持不变,即完成序列K的元素添加;将A(3)与A(2)比较,如果A(2)<A(3),则保持不变,否则两者交换,继续将A(3)与A(1)比较,如果A(3)>A(1),则两者交换,否则保持不变;以此类推,将余下序列中的元素取出插入到序列K中,从序列K尾部往首部进行比较,直至完成所有元素的插入。
matlab代码
主程序:main.m
format short;
clc;clear;
A = round(rand(1,8),2);
nA = InsertSort(A);
disp(['原始序列:',num2str(A)]);
disp(['插入排序:',num2str(nA)]);
插入排序函数:InsertSort.m
function A = InsertSort(A)
% 感谢关注:matlab爱好者
% 插入排序算法源代码
% 作者:matlab爱好者
len = length(A);
for w = 1:len-1
% 从余下序列中取出一个元素插入到新序列中
for v = w+1:-1:2
if(A(v)<A(v-1))
% 如果新元素小于所插入位置的元素,则交换
tmp = A(v-1);
A(v-1) = A(v);
A(v) = tmp;
else
% 否则保持位置不变
break;
end
end
end
‘贰’ 如何利用RSA加密算法编程实现对M=1234567的加密过程
基础 RSA 算法构建加密过程非常直接,具体步骤如下:
首先,选取两个素数 p 和 q,随后计算 n = p * q 以及 t = (p - 1) * (q - 1)。然后,选择任意数 e,确保 e 与 t 的最大公约数为 1,即 e 可以与 t 互为逆数。至此,我们已经得到了三个关键数值:n、d 和 e。
假设消息 M = 1234567,我们将 M 作为原始信息,通过以下步骤进行加密:
计算加密后的信息 c = (M^d) % n,即使用私钥 d 进行加 密。
接收方接收到加密信息 c 后,使用私钥 e 进行解密,步骤为:m = (c^e) % n,最终得到原始信息 M。
在对称加密应用中,公钥由 n 和 d 组成,公钥可以与他人共享;私钥包含 n 和 e,其中 e 由发送方持有,并严格保密。他人使用发送方的公钥对信息进行加密,仅发送方能通过私钥解密,实现信息的签名验证功能。
RSA 算法的安全性基于大数 n 的分解难题。在已知 n 和 d 的情况下,很难找到 e;同样,当已知 n 和 e 时,也难以求得 d。这为 RSA 算法提供了强大的安全保障,确保了消息在传输过程中的安全性和完整性。
‘叁’ 九宫图算法的实现步骤
第一步:菱形斜填写
第二步:菱形四角的3和7,1和9交换,如下图
第三步:9和1插队进去,如图
先将1—9九个数按如下图排列
1
4 b 2
7 c 5 a 3
8 d 6
9
然后将a用7代替,同理1换d,3换c,9换昌咐弊b
便可得如下排列:
4 9 2
3 5 7
8 1 6
此方法也可推导至所有的基数的平方宫图进行排列。
方法2:以中下格为起点,按右下为方向顺序填写(想象格子上下相连,左右相连),遇到右耐族下格已占,填入正上方格内。
以25格为例: 11↘ 18↘ 25 2↘ 9↘
10填左方简型 10↑
11填上方 12↘ 19↘ 21↘ 3↘
4填左方 4↘ 6↘ 13↘ 20↑ 11填上方 22↘
23填左方 23↘ 5↑
6填上方 7↘ 14↘ 16↘
17填左方 17↘
18填上方 24↘
25填上方 1↘
2填上方 8↘
9填上方 15↑ 16填上方