百度笔试题目

24 篇文章 0 订阅

假定有20个有序数组,每个数组有500个数字,数字类型32位uint数值,现在需要取出这10000个数字中最大的500个,怎么做?

 思路:20个有序数组,不妨设数序为降序。首先把20个数组中最大的(也就是a[i][0])进行大堆排序,输出堆顶元素(最大),在输出的那个元素之前所在的数组中,取下一个元素,放到堆顶,然后进行堆排序,在输出堆顶元素,依次循环输出500个即可。(输出最小的500,同样的道理,只不过进行小堆排序),这样充分利用了题干的条件。


  1. #include<iostream>  
  2. using namespace std;  
  3. struct node  
  4. {  
  5. int data;  
  6. int next;  
  7. };  
  8. node obj[20];  
  9. void sift(int k,int m,int b[])//调整一个元素在堆的位置  
  10. {  
  11.      int i=k,j=2*i+1,temp;  
  12.      while(j<m)  
  13.   {  
  14.        if(j<m-2&&b[j]<b[j+1])// 体会j<m  
  15.            j++;  
  16.         if(b[i]>=b[j]) break;  
  17.        else {  
  18.         temp=b[i];  
  19.         b[i]=b[j];  
  20.         b[j]=temp;  
  21.         i=j;  
  22.         j=2*j+1;  
  23.     }  
  24.   }  
  25. }  
  26. void s_hsort(int n,int a[][500])  
  27. {  
  28.     int temp=0,j=0;  
  29.  int b[20];  
  30.  for(int k=0;k<20;k++)  
  31.  {  
  32.   b[k]=a[k][0];  
  33.   obj[k].data=a[k][0];  
  34.   obj[k].next=1;  
  35.  }  
  36.   for(k=0;k<500;k++)  
  37.  {  
  38.     for(int i=(n-1)/2;i>=0;i--)//把20个元素调整为大堆的形式  
  39.        sift(i,n,b);  
  40.     cout<<b[0]<<endl;//输出堆顶  
  41.   for(i=0;i<20;i++)//把堆顶值换成下一个入堆的元素  
  42.     if(b[0]==obj[i].data)  
  43.         temp=i;  
  44.    b[0]=a[temp][obj[temp].next];  
  45.    obj[temp].data=b[0];  
  46.    obj[temp].next+=1;  
  47. }   
  48. }  
  49. int main()  
  50. {  
  51.  int a[20][500];  
  52. for(int j=0;j<20;j++)//初始化这个二维数组  
  53.   for(int i=0;i<500;i++)  
  54.   a[j][i]=10000-(i+1)-50*j;  
  55.    
  56. s_hsort(20,a);  
  57. return 0;  
  58. }  

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
软件介绍 数字报刊系统        一套用于报刊杂志数字版发布、更新的软件,只需将包含文章内容的纯文本进行简单标识,就可由本软件根据模板快速生成整个网站的内容,可使更新效率大大提高,而且避免了手工更新容易出现错误的问题,是各小报纸杂志社制作、更新自已的数字版网站的好助手. 根据当互联网上新闻媒体的应用,宜锐科技公司自主开发并推出了一款“数字报刊/杂志系统”发布系统软件现在我们的“数字报纸”不仅在页面设置上,更在概念上比传统电子版报纸有全新的突破,如果说以只是将当天报纸上的内容提供给网友,而今提供的是整个报纸的全貌,除了不能有纸张的触摸感,阅读的过程体验和传统报纸高度契合,对于数字报纸,提供原汁原味的报纸阅读效果!该软件具备以下功能: 特点:       1.可以多个模板使用;多模板使用时候,可以分布不同的期刊使用不同的模板.       2.多浏览方式,AJAX 静态页面 企业内部整合,按需定制.       3.更方便的按需定制,程序架构更灵活,可以按照您的需要,来定制独特的程序。 4.FLASH 拖拽等高级效果:可达到图、文、音、像、静动态效果。       5.版面简单易操作节省成本,软件按照合理工作流程实现,同时对操作人员只要求具有基本的计算机知识,节省人力、物力、时间方面的成本。       6.信息传播更快捷: 在每期报纸排版完成的同时即可发布报纸网络版,省去了传统报纸所需的印刷,发行的时间,使报纸的时效性更强        7.发行的覆盖面更广泛: 通过网络报纸平台的发布,任何人只要能上网,就能阅读到刊物上的信息,报纸不再是某区域内发行,而是做到了全球发行。         8.可回溯性增强: 网络报纸的发布过程也同样是报纸发行发布过程 。回顾功能可以让客户轻松的找到特定期次的报纸内容,也方便了编者对报纸内容的管理。         9.全文检索更实用: 用户可以运用关键字搜索的方式,查询到相关度最高的文章,从而迅速找到相关文章。        10.内容的互动性增强: 通过在线评论、邮件等方式让信息不再是单向传播,通过读者和编辑的互动形成一个促进报纸不断发展进步的良性循环。 功能:       1.版面阅读:采用带有区域定位的版面图在网页直接显示,不需要安装第三方插件或阅读器。点击版面图的任何区域,即可看到对应的文章、图片或广告。       2.版面导航:点击"版面导航",可以通览当天所设版面。任意点击一个版面序列,页面左边即出现相应版面,右边出现主要新闻的标题。      3.标题导航:点击"标题导航",可以通览当天报纸的全部文章标题。点击标题,可进入相应文章或图片页面。      4.日历导航:点击版面上的“往期回顾”可以直接进入指定日期的报纸页面。      5.导航指针:采用指针方式实现"上一版"、"下一版"、"上一篇"、"下一篇"的不间断阅读转移。 作用:       1.使广大网络用户能够更方便快捷的阅读任何一期报纸。 2.为报纸内容的网络营销做用户积累和技术准备: 通过网络 用户人气的聚集和相关的网络营销实践,为报业企业开辟新的收入模 式做准备(在网络版报纸上挂广告获得客户,而且广告形式由单纯静 态变成动态显示。)      3. 为企业报发布电子版提供在线宣传服务,使每个企业报拥有自己独立的在线报纸展示平台,为企业宣传企业文化塑造一个网上的平台。 面向对象 : 适合报社,学校,政府,企业。 后台用户名:admin 密码:hsortadmin

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值