学习内容:
1、快速幂、埃氏筛法
2、快速排序,图的遍历思想
学习时间:
8:00~8:10 签到
9:00~11:30 Java的对象、static
12:30~ 1:30 快速幂、埃氏筛法
2:00~4:00 刷题
5:30~6:30 快速排序,图的遍历思想
今天重新看了一下快速幂和埃氏筛法,快速幂的话呢是使用二进制来处理的,将次方变成进制的形式来得值,重点代码段是
int a=1;
int b=x;
while(y)
{
if(y&1)//为1的话就可以获值
a*=b;
b*=b;//因为2的0次是1,2的1次就是2了,2的2次是4,是前面值得两倍.
y/=2;
}
埃氏筛法的话,就是用数组的下标来当值使用,数组的值是用来判断它是否是素数,因为后面的数都是前面素数组成的。重点代码
int i;
int a[1000]={0};
for(i=2;i<1000;i++)
a[i]=1;//将2~999变为1,假设是素数
for(i=2;i<1000;i++)
{
if(a[i])//将素数的倍数除去,剩下的就都是素数了
for(j=i*2;j<1000;j+=i)
a[j]=0;
}
快速排序的思想
就是找一个中间值然后将所有数分成两边左边小于中间值,右边大于中间值,中间值的取法可以将数组的第一个和最后一个以及中间的三个数进行对比取中间那个数。多次进行这样的操作就ok了。
图的遍历思想
深度搜索:从底部一个一个的遍历直到不能前进然后退回前一步从另一方向走下去。
广度搜索:从第一个节点遍历出与之相连的节点,并记录,然后再跳到已被记录的下一个节点。