春节期间小明使用微信收到很多个红包,非常开心。在查看领取红包记录时发现,某个红包金额出现的次数超过了红包总数的一半。请帮小明找到该红包金额。写出具体算法思路和代码实现,要求算法尽可能高效。
2015-09-11 11:37
1026 查看
1、问题:春节期间小明使用微信收到很多个红包,非常开心。在查看领取红包记录时发现,某个红包金额出现的次数超过了红包总数的一半。请帮小明找到该红包金额。写出具体算法思路和代码实现,要求算法尽可能高效。
2、我们开始可能不会有什么思路,这道题甚至连个数据参数都没有,但是别急,我们细想一下,这个数据在所有数据中出现的次数超过了一半,那么也就是说将这些数据排完序后,中间那个数肯定就是数目最多的红包,这样就很轻松的将问题转换成排序问题,那么问题来了,几种排序那种排序最优-----当然要数“快排”,所以下面我将会贴出我的程序。
运行结果为:
2、我们开始可能不会有什么思路,这道题甚至连个数据参数都没有,但是别急,我们细想一下,这个数据在所有数据中出现的次数超过了一半,那么也就是说将这些数据排完序后,中间那个数肯定就是数目最多的红包,这样就很轻松的将问题转换成排序问题,那么问题来了,几种排序那种排序最优-----当然要数“快排”,所以下面我将会贴出我的程序。
package redBag; public class Test { public static void main(String[] args) { float []a={1,3,5,6,6,6,6,6,6,6,8,9}; System.out.println(new Test().mostMoney(a)); } public void quickSort(float []a,int x,int y){ if(x>y) return; int i=x; int j=y; float t=a[x]; while(i<j){ if(i<j&&a[j]>=t) j--; a[i]=a[j]; if(i<j&&a[i]<=t) i++; a[j]=a[i]; } a[i]=t; quickSort(a, x, i-1); quickSort(a, i+1, y); } public float mostMoney(float []a){ quickSort(a, 0, a.length-1); return a[a.length/2]; } }
运行结果为:
相关文章推荐
- Android应用加入微信分享
- 第三篇 微信开发 微信商城云服务器后台创建(转载自walkingmanc专栏)【转】
- 第二篇 微信开发 探秘微信公众号(转载自walkingmanc专栏)【转】
- 第一篇 微信开发 准备工作(转载自walkingmanc的专栏)【转】
- 微信第三方平台开发一(创建组件)
- (4.3.1.11)微信扫描二维码无法下载apk文件解决办法
- 微信企业号开发:微信考勤百度地图定位
- 微信企业号开发:微信考勤Cookies的使用
- 小程序-----Java实现输出5个大于100,小于1000的随机数
- PullDownListView高仿微信下拉眼睛出现动画
- Android仿微信图片上传,可以选择多张图片,缩放预览,拍照上传等
- 微博电商VS微信电商 同质化下的差异竞争
- 微信 token 验证
- 微信三级分销你知道多少?wemall
- 微信JSSDK开发JAVA版实现
- 微信开发如何做本地调试?
- 微信开发如何做本地调试?
- 微信开发如何做本地调试?
- 微信开发如何做本地调试?
- Android PopupWindow 仿微信点赞和评论弹出框