博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU1157 POJ2388 Who's in the Middle
阅读量:7055 次
发布时间:2019-06-28

本文共 983 字,大约阅读时间需要 3 分钟。

问题链接:。基础级练习题,用C语言编写程序。

问题简述:输入n,然后输入n个整数,求这n个整数中大小位于中间的数。

问题分析:使用分治法,用求第k大数算法实现。

程序说明另外一种解法更加简洁,参见以下链接。

参考链接:。

AC的C语言程序如下:

/* HDU1157 POJ2388 Who's in the Middle */#include 
#define MAXN 10000int data[MAXN+1];int split(int a[], int low, int high){ int part_element = a[low]; for (;;) { while (low < high && part_element <= a[high]) high--; if (low >= high) break; a[low++] = a[high]; while (low < high && a[low] <= part_element) low++; if (low >= high) break; a[high--] = a[low]; } a[high] = part_element; return high;}// 非递归选择问题算法程序int selectmink(int a[], int low, int high, int k){ int middle; for(;;) { middle = split(a, low, high); if(middle == k) return a[k]; else if(middle < k) low = middle+1; else /* if(middle > k) */ high = middle-1; }}int main(void){ int n, ans, i; while(scanf("%d", &n) != EOF) { for(i=0; i

转载于:https://www.cnblogs.com/tigerisland/p/7564441.html

你可能感兴趣的文章
使用postMessage实现跨窗口消息传递
查看>>
VIM跳转和小改动
查看>>
svn 常用指令 及 常见问题记录
查看>>
修改全志A10, A20的Nand分区大小
查看>>
python class和class(object)用法区别
查看>>
ejs标签
查看>>
我的友情链接
查看>>
Linux/Unix批量处理产生
查看>>
XFS和RAID6性能优化
查看>>
corosync+pacemaker 实现高可用集群(三)
查看>>
linux下的java开发环境
查看>>
Bootstrap使用记录
查看>>
从一场场大型网站灾难过后的BUG:根
查看>>
Linux系统下怎样利用nc命令来监控检测服务器的端口使用情况
查看>>
git命令总结
查看>>
tomcat高访问jvm配置
查看>>
谢烟客---------二进制安装MariaDB,管理关系型数据库的基本组件
查看>>
JS 判断手机浏览器
查看>>
Xcode WorkSpace静态库多项目依赖
查看>>
【C语言】 实现memset
查看>>