Coursera Standford
Algorithms: Design and Analysis, Part 1
第一章:
1.大数加法的算法改进
我们都知道低位数的乘法比高位数的乘法要好算,根据高位数与低位数的关系,遇到了高位数乘法我们可以将它转换到
几个低位数乘法组合的形式。图中例子给出的是1234*5678,利用分治法将大数分解成(12*100+34)*(56*100+78)。比较基础
但是揭示了分治法的思想就是将复杂问题简化成简单问题的组合。
第一周作业:代码短了些用MATLAB写的,运算时间在10分钟之内,还有待改进。
clc;clear;
importdata('IntegerArray.txt');
A=importdata('IntegerArray.txt');
sum=0;
D=zeros(size(A));
D(1)=A(1);
for n=2:100000
for i=1:n-1
if D(i)>A(n);
for j=n:-1:i+1
D(j)=D(j-1);
end
sum=sum+n-i;
D(i)=A(n);
break;
end
end
if i==n-1&&D(i)<A(n)
D(n)=A(n);
end
end