算法--两道百度笔试题

标签: 算法 百度 | 发表时间:2011-09-01 14:09 | 作者:啊汉 Bloger
出处:http://www.cnblogs.com/

算法--两道百度笔试题

  今天看到一位园友写了一篇关于百度的面试题的博客,成了评论头条,再下看了一下,非常感兴趣,那位博主的算法能力跟我一样需要提高,估计他的功力还在我之下,所以再下不才,在这里把自己的源码贴出来。

         百度面试题(一):假设一整型数组存在若干正数和负数,现在通过某种算法使得该数组的所有负数在正数的左边,且保证负数和正数间元素相对位置不变。时空复杂度要求分别为:o(n)o(1)。

         其实开始的时候我也是一头雾水,在纸上画画之后发现,其实就是一道变形的插入排序。幸运的是这里不需要比较大小,要比较大小的话时间复杂度是O(n2),只用判断正负,那时间复杂度就只要O(n)了。

         如:-3,1,2-1-3,4。其实就是把正数后面的第一个负数(如-1)插到第一个正数(1)的前面,负数之间的每个正数(1,2)后移一位,就这么简单。时间复杂度刚好为O(n),控件复杂度为O(1)。

  

//算法分开正负数
void insertSort(int *A ,int size)
{
int minus=-1,plus=-1;
int tmp=0;
for(int i=0;i<size;i++)
{
if(minus==-1)
{
if(A[i]<0 && plus>=0)
{
minus
=i;
}

if(A[i]>0 && plus<0)
{
plus
=i;
}
}

if(minus>=0 && plus>=0)
{
tmp
=A[plus];
A[plus
++] = A[minus];
for (int k = minus; k> plus; k--)
{
A[k]
= A[k - 1];
}
A[plus]
=tmp;
minus
=-1;
}
}
}

 

         百度面试题(二),给定一个存放正数的数组,重新排列数组使得数组左边为奇数,右边为偶数,且保证奇数和偶数之间元素相对位置不变。时空复杂度要求分别为:o(n)o(1)。

       其实这两道笔试题没有什么区别,要说有区别就是看你是否理解。

//算法分开奇偶数
void insertSort1(int *A ,int size)
{
int minus=-1,plus=-1;
int tmp=0;
for(int i=0;i<size;i++)
{
if(minus==-1)
{
if(A[i]%2!=0 && plus>=0)
{
minus
=i;
}

if(A[i]%2==0 && plus<0)
{
plus
=i;
}
}

if(minus>=0 && plus>=0)
{
tmp
=A[plus];
A[plus
++] = A[minus];
for (int k = minus; k> plus; k--)
{
A[k]
= A[k - 1];
}
A[plus]
=tmp;
minus
=-1;
}
}
}

测试代码如下:

//测试代码
int main() {

int A[]={2,1,-2,12,4,-2,-4,-6 };
int size=sizeof(A)/sizeof(int);
cout
<<"-----------------------算法分开正负数-----------------------"<<endl;
for(int i=0;i<size;i++)
{
cout
<<A[i]<<"\t";
}
cout
<<endl;
insertSort(A,size);
for(int i=0;i<size;i++)
{
cout
<<A[i]<<"\t";
}
cout
<<endl;
cout
<<endl;
cout
<<"-----------------------算法分开奇偶数-----------------------"<<endl;
int B[]={2,1,-2,12,4,-2,-4,-6};
int s=sizeof(B)/sizeof(int);
for(int i=0;i<s;i++)
{
cout
<<B[i]<<"\t";
}
cout
<<endl;
insertSort1(B,s);
for(int i=0;i<s;i++)
{
cout
<<B[i]<<"\t";
}

getchar();
return 0;
}

运行结构截图:

 

 

 

作者:陈太汉

博客:http://www.cnblogs.com/hlxs/

 

 

 

作者: 啊汉 发表于 2011-09-01 14:09 原文链接

评论: 73 查看评论 发表评论


最新新闻:
· VMware发布Cloud Foundry的免费版本(2011-09-01 23:02)
· OMG总裁Soley说:“当人们不再热议某个标准时,就意味着它已经成功”(2011-09-01 23:01)
· Google Search By Image 中国团队完成一半以上研发(2011-09-01 23:00)
· Macbook Air诡异用途:保护亚马逊丛林(2011-09-01 22:59)
· 英特尔投资安全技术公司Mocana(2011-09-01 22:15)

编辑推荐:我为啥喜欢WinPhone

网站导航:博客园首页  我的园子  新闻  闪存  小组  博问  知识库

相关 [算法 百度] 推荐:

算法--两道百度笔试题

- Bloger - 博客园-首页原创精华区
  今天看到一位园友写了一篇关于百度的面试题的博客,成了评论头条,再下看了一下,非常感兴趣,那位博主的算法能力跟我一样需要提高,估计他的功力还在我之下,所以再下不才,在这里把自己的源码贴出来.          百度面试题(一):假设一整型数组存在若干正数和负数,现在通过某种算法使得该数组的所有负数在正数的左边,且保证负数和正数间元素相对位置不变.

可悲的百度算法机制

- - 月光博客
  最近似乎已经很少看到有关于SEO的相关文章了,这是不是印证了《 SEO已死》这篇文章. 可能,也许在中国,真正的SEO离死真的并不遥远了.   最近有个朋友频频跟笔者抱怨,网站无法被百度正常收录,几个关键词的排名也是好几个月没有动过了. 这位朋友是个专心做内容的家伙,因为时常被我灌输“内容为王”的理念,而他网站的相关行业客户对象一般都是年龄较大的互联网用户,在分享传播和外链上,几乎不能指望靠优秀的内容达成,所以在外链规模上十分有限.

转载:百度百科经典算法集合

- 甜菜 - 博客园-aspirin
排序算法:http://baike.baidu.com/view/297739.htm . 冒泡排序法:http://baike.baidu.com/view/1313793.htm . 起泡法:http://baike.baidu.com/view/174304.htm . 鸡尾酒排序:http://baike.baidu.com/view/1981861.htm .

王通:百度算法变化分析与SEO对策

- - Web2.0 News
6月份,百度算法大改变,表现如下:. 1、绝大部分网站在百度的收录量都下降了,包括众多收录千万的大型网站的;. 2、估计有2%~3%的网站直接被百度封杀了,在百度中没有排名或者彻底被拔毛;. 3、百度快照数据经常出问题,例如无快照,甚至新域名新网站显示2003年的快照. 假原因:打击伪原创,提升用户体验.

百度“石榴算法”的发展趋势

- - 月光博客
  据百度站长平台 报道,百度即将针对低质量页面将进行一系列调整,称之为石榴算法. 第一期将对此类页面生效:含有大量妨碍用户正常浏览的恶劣广告的页面,尤其以弹出大量低质弹窗广告、混淆页面主体内容的垃圾广告页面为代表.   石榴算法上线后,广告少、无弹窗的优质页面排序有所提升,相应的含有恶劣弹窗、大量混淆页面主体内容等垃圾广告的页面排序会大幅下降.

百度调整移动搜索排序算法,鼓励网站移动化

- - ITeye资讯频道
近日, 百度宣布开始对移动搜索排序算法进行调整,鼓励网站运营者与站长进行手机页的优化. 同时,还将为站长和开发者提供手机建站、提交和优化等全套免费服务. 此前,谷歌也宣布其 GoMo服务与DudaMobile合作,免费提供网站移动化服务. 据了解,2011年中国移动互联网用户规模达4.3亿,环比增长50%,但传统网页的终端适配一直未能得到有效解决,影响了这一移动用户群体的应用体验.

百度急了

- - 创业家杂志社
来源: 21世纪经济报道 作者:汤浔芳. 2013年1月,百度CEO李彦宏在百度2012年表现中“公司系数”一栏的打分是0. 在不少员工看来,这是Robin(李彦宏的英文名)对百度在“移动互联网”上的表现不满意. 这个史无前例的差评让不少员工开始在网上吐槽年终奖会不会大幅缩水,因为公司系数占年终奖的30%.

该死的百度

- 菡萏 - Pure Pleasure - Reborn
之前,百度把收费的医药、医院广告链接掺杂在搜索结果里,被央视点名批评(其实谁都知道它们都心怀不轨),但百度是不怕的,受伤的是民众、草根,发不出声音——于是此事不了了之(后来的结果是李彦宏在央视打广告、上春晚). 再后来,百度封杀淘宝联盟的40万站长,很多小站被迫停止运营;站长们跑到百度办公楼前抗议,但百度是不怕的,因为这些站长还是发不出声音(网站都开不下去了,只能亲自示威)——于是此事再次不了了之⋯⋯可这次,百度惹到作者头上了,别管这些作者质量是否良莠不齐(韩寒、郭敬明、贾平凹、王三表等等一并出现在声讨百度的队伍中),但他们是天然的“自媒体”,百度开始以为没事儿,两三天下来才发现捅了马蜂窝⋯⋯.

百度献礼门

- Shawn - wsmlby的Plog
来源: 温广阳KinKer的日志. 如果你以为我单指在百度里面输入“建党”就会看见的红旗赞歌的话,你就大错特错了. 本来这种媚上的传统也算是几千年文化的一部分了,无需大惊小怪,发这样的状态,估计只会被认为是抓住一切机会讥讽社会主义伟大建设的行为,所以我看见梅姐也同瞎就很开心地继续复习了,但是师傅说他献了整整10束花才发现没有献花上限,令我心里陡然一动.

缓存算法

- lostsnow - 小彰
没有人能说清哪种缓存算法由于其他的缓存算法. (以下的几种缓存算法,有的我也理解不好,如果感兴趣,你可以Google一下  ). 大家好,我是 LFU,我会计算为每个缓存对象计算他们被使用的频率. 我是LRU缓存算法,我把最近最少使用的缓存对象给踢走. 我总是需要去了解在什么时候,用了哪个缓存对象.