【1】给一系列数:a1,a2,a3,...,an,要求找出其中2个数ai,aj,使得ai+aj=X,算法时间复杂度为:O(nlogn)。

思路:

先排序,采用快排。在设置2个指针low、high,分别指向第一个、最后一个数,然后向中间扫描靠拢,遇到a[low]+a[high]就输出。

直到low=high。

参考代码:

#include<stdio.h> #define MAXLEN 1000 int partition(int a[],int low,int high){ int pivotkey=a[low]; while(low<high){ while(low<high&&a[high]>=pivotkey){ --high; } a[low]=a[high]; while(low<high&&a[low]<=pivotkey){ ++low; } a[high]=a[low]; } a[low]=pivotkey; return low; } void quickSort(int a[],int low,int high){//快排; if(low<high){//这一句必须有; int mid=partition(a,low,high); quickSort(a,low,mid-1); quickSort(a,mid+1,high); } } int main(){ int a[MAXLEN],n,i,low,high,sum,count; printf("请输入数的个数:/n"); scanf("%d",&n); printf("请输入这n个数:/n"); for(i=0;i<n;i++){ scanf("%d",&a[i]); } printf("请输入和:/n"); scanf("%d",&sum); quickSort(a,0,n-1);//快排n个元素; printf("排序后:/n"); for(i=0;i<n;i++){ printf("%d ",a[i]); } printf("/n满足要求的数据有:/n"); low=0; high=n-1; count=0;//记录符合条件的组数; while(low<high){ while(low<high&&a[low]+a[high]>sum){ --high; } while(low<high&&a[low]+a[high]<sum){ ++low; } if((a[low]+a[high])==sum){ ++count; printf("%d+%d=%d/n",a[low],a[high],sum); --high;//指针继续移动,寻找下一组符合要求的数据; } } if(count==0){ printf("没有符合条件的2个数!/n"); } }

数据测试:

华科10年计算机考研复试笔试(算法基础)(1)相关推荐

  1. 2011年华科计算机考研复试笔试算法、数据库(回忆版)

    笔试答得一般吧,主要是复习的状态不好,也没做很多习题,其实题目并不算太难. 更多考研资料,请访问王道论坛:www.cskaoyan.com

  2. 计算机考研复试上机算法学习

    计算机考研复试上机算法学习 这篇博客是博主在准备可能到来的线下上机复试基于王道机试指南的学习,将各道习题链接和代码记录下来,这篇博客权且当个记录. 文章目录 计算机考研复试上机算法学习 1.STL容器 ...

  3. 华科02年计算机考研复试机试

    [1]编一个程序,读入用户输入的,以"."结尾的一行文字,统计一共有多少个单词,并分别输出每个单词含有多少个字符.(凡是以一个或多个空格隔开的部分就为一个单词). 参考代码: #i ...

  4. 华科00年计算机考研复试机试

    [1]输入n, 求y1=1!+3!+...m!(m是小于等于n的最大奇数) y2=2!+4!+...p!(p是小于等于n的最大偶数) 参考代码: #include<stdio.h> int ...

  5. 华科05年计算机考研复试机试

    [1] 第一题:对给定的一个字符串,找出有重复的字符,并给出其位置,如: 输入:abcaaAB12ab12 输出:a,1:a,4:a,5:a,10 b,2:b,11 1,8:1,12 2,9:2,13 ...

  6. 华中科大10年计算机考研复试机试

    先说题: 共三道题,1.5小时,C语言实现.时间很紧啊.... a.输入一个字符串,然后对每个字符进行奇校验,最后输出校验后的二进制数!(如'3',输出:10110011): b.设计8个任务函数ta ...

  7. 华科08年计算机考研复试机试

    [1] 输入一个十进制数,将其先转化为八进制数,然后再输出. 参考代码: #include<stdio.h> #include<stdlib.h> int main() { i ...

  8. 华科05-03年计算机考研复试机试

    [1]输入一个数列以0为结束标志,建立链式线性表,查找其中最大的数并输出删除释放节点,然后对剩余的进行排序,并输出释放节点. 参考代码: #include<stdio.h> #includ ...

  9. 2022年北京理工大学计算机考研复试时间与安排

    2022年北京理工大学计算机考研复试时间:2022年3月中下旬 2022年北京理工大学计算机考研复试安排查询入口:北京理工大学计算机学院 2022年北京理工大学计算机考研复试准备: 复试时间.地点.科 ...

最新文章

  1. 你们这行我懂,不给点好处都不接!
  2. 经典C语言程序100例之八五
  3. 5G PDCCH介绍
  4. 模板编译template的背后,究竟发生了什么事?带你了解template的纸短情长
  5. LeetCode 1708. 长度为 K 的最大子数组
  6. linux的oracle修改实例名SID
  7. IE6.0中js优化
  8. imx226_IMX226CQJ-海思网络摄像芯片
  9. 『STATISTICS』傻瓜弄懂t检验
  10. 【常用模块】电容触摸按键模块(原理讲解、STM32实例操作)
  11. Android之notification通知无法点击打开APP问题解决
  12. 向日葵显示无法连接到服务器,请修复电信卡使用向日葵远程无法连接服务问题!!!...
  13. 国内各大安卓应用市场的不同ASO优化点
  14. 【Java每日一题】Java笔试100题(1)
  15. 鸡嗉囊炎有哪些症状 什么药防治鸡嗉囊肿大
  16. 在计算机上配置dns,常见设备和系统上配置DNS的方法DNS服务器 -电脑资料
  17. Win10域客户端强制更改壁纸
  18. 子组件调用父组件中方法的方法
  19. IDC_ISP网络之IDC机房内网络架构及配置
  20. XWiKi 部分汉化

热门文章

  1. Numpy之Broadcasting
  2. jQuery-事件和应用
  3. Anaconda3安装后,解决cmd中jupyter,pip,python不是内部命令以及jupyter更改默认路径问题
  4. git代码托管 · 操作举例: “git bash here ”(全程操作讲解) - git命令篇
  5. MUI框架 · 异步请求:mui.get()、mui.ajax()、mui.post() 技术罗列
  6. elementUI响应式布局@media:基于断点的隐藏类
  7. api有哪些 javasocket_基于java的socket编程及API解析
  8. 安卓手机状态栏 定位服务自动关闭_手机电池为什么会越用越不耐用
  9. 信恒支付源码-第四方支付源码
  10. QQ互联聚合登录中转API程序源码