写一个函数找出一个整数数组中,第二大的数
2015-07-20 00:52
323 查看
void divide(int a[], int n, int begin, int end, int k) { if (begin > end) { return; } int pivot = a[end]; int p = begin; int q = begin-1; while (p < end) { if (a[p] > pivot) { q++; swap(a[p], a[q]); } p++; } swap(a[q+1], a[end]); int result = q+1; if (result == k-1) { return; } else if (result > k-1) { divide(a, n, begin, result-1, k); } else { divide(a, n, result+1, end, k-(result+1)); } } int fun(int a[], int n) { divide(a, n, 0, n-1, 2); if (a[0] < a[1]) { return a[0]; } return a[1]; }
相关文章推荐
- less
- SQL小结(四)
- copy strong assign weak retain 的用法
- 循环判断视图中的子控件:
- 使用UBOOT烧写根文件系统和内核的方法 2012-08-13 20:39:28
- [BZOJ1045][HAOI2008]糖果传递
- 网页设计常用的CSS和ID命名规则
- JAVA基础_Java网络编程
- 两天学会DirectX 3D之第二天
- git 操作
- Leetcode#53 Maximum Subarray
- imx515 uboot UBIFS移植及android UBIFS文件系统烧写
- 你必须知道的指针基础-5.指针的几个小应用案例
- 大型项目开发: 隔离 (《大规模C++程序设计》书摘)
- 软件无痕清除目录
- 表单的验证
- Codeforces Round #311 (Div. 2) A,B,C,D,E
- HDU 5093 Battle ships(二分图匹配)
- 整合了刷新、加载更多、滑动删除功能的XListview
- Allegro中Thermal relief Pad 和Anti Pad