博客学习十——二分搜索、扫描算法、C难点

1、二分搜索:
返回第一次出现的位置:start、end,遇到等于的移动end指针,最后返回end指针的数据
返回最后一次出现的位置:遇到等于的移动start指针,最后返回start指针的数据
2、一个问题:
怎么重新编写代码使二分搜索执行得更快?
用二分搜索树?但是空间上会增大
3、assert艺术
4、计时:
starttime=clock()
clicks=clock()-starttime
5、最大子向量:算法设计技术:
分治算法:nlogn,次平方
扫描算法:线性:
maxsofar=0
maxendinghere=0
for i = [0,n)
maxendinghere=max(maxendinghere+x[i],0)
maxsofar=max(maxendinghere,maxsofar)
6、查找最接近0的最大子向量之和


7、腾讯笔试题

http://blog.csdn.net/kingjinzi_2008/article/details/7785334


==================================================

1、string对象:+号两边至少有一个必须是string类
2、string下标为size_type类型,不是int
3、难点:
一、类型转换:
隐式类型转换:
1)混合型算术表达式:int + double;
2)赋值:
int = double;
int *=0;
3)函数传参:
sqrt((double)int)
4)函数返回:
double=double sqrt();
二、针对用一个表达式判断一个数的相关性质时,多利用位运算,判断一个数X是否为2的N次方:
!(X&(X-1))
三、& ^ | 操作的规律
http://blog.csdn.net/g_spider/article/details/5750665
^ : 取的是两个数相同的位,其余位为0,可用于两数交换:a=a^b;b=a^b;a=a^b;
四、预处理、const、sizeof
1)#define SECOND_PER_YEAR (3600*24*365)UL
2)const对比于宏定义:const常量是数据类型,可以被调试
3)C中:
const int BufSize=100;int buf[BufSize];//false,BufSize占用内存某个地方,编译时的值未知
const int BufSize;int buf[BufSize];//true,BufSize是个声明,其他地方有内存分配;
C++将const看作是内部连接,需写为extern const int BufSize;C中const为外部连接
4)C++中的const成员函数?
5)sizeof()计算的是栈中分配的内存大小,static分配在全局数据区的不会被计算出来,c++中static的数据不会被计算在内,c中struct不能存放static数据
6)数据对齐:数据所在的内存地址必须是该数据长度的整数倍;一般是4字节对齐,若有double,则8字节对齐
7)对于class,在没有数据的情况下,若只有构造函数和析构函数,则sizeof(class)=1,若出现了其他函数,则sizeof(class)=4
五、指针与引用
1)传址传引用
2)经典的找错:
struct S{int i;int *p}s;
main(){
int *p = &s.i
p[0] = 4;
p[1] = 3;
s.p = p;
s.p[1] = 1;
s.p[0] = 2;
}
3)char a[5];
char (*p)[5] = a;//p为指向长度为5的字符数组的指针,a为数组首元素的地址,两边类型不一致
char (*p)[5] = &a;//&a为数组首地址,类型一致
六、多态?模板?STL?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值