身高排队算法_高的排中间,矮的站两边【Java实现】
文章目录
- 身高排队算法
- 序言
- 算法思想简述
- 附赠打印函数代码帮助大家理解与手动
- 总结
- IDEA运行截图
身高排队算法
序言
在排队照相时,我们往往按照身高来排队,通常的做法就是高的站中间,矮的站两边。笔者今天利用计算机算法,来实现这一排队实现。
算法思想简述
第一步:利用JAVA自带的Java.util.Arrays工具类,给保存了身高数据的数组进行排序。
第二步【重点】:在第一步的基础上,我们已经对数组进行了原地升序排序,而我们利用排序得出的结果,来对数组进行再排序。而再排序的具体方法与思想,通过下图实现。
通过图片我们可以明白,首先就是要找到数组的中间位置,安置下最大数值的元素,然后是两边排序,左边按照奇数索引升序排序,右边按照偶数索引降序排序,这样就完成了身高站队排序。而具体的代码实现中,又分为两个步骤,分别考虑总人数为偶数,以及总人数为奇数的情况。
public static int[] sortArrays(int[] height){if(height.length == 0){return new int[]{};}/**总人数为1或2时,直接返回原数组,无排对意义。*/if(height.length == 1 || height.length == 2){return height;}// 总人数大于等于3时,参与排序Arrays.sort(height);int[] sortheight = new int[height.length];int m = (height.length-1)/2;if (height.length % 2 == 0){for (int i = 0,k=1; i <=m; i++,k+=2) {sortheight[i] = height[k];}for (int i = m+1,k= height.length-2; i<= height.length-1;i++,k-=2){sortheight[i] = height[k];}}else{for (int i = 0,k=1; i <m; i++,k+=2) {sortheight[i] = height[k];}for (int i = m,k= height.length-1; i<= height.length-1;i++,k-=2){sortheight[i] = height[k];}}return sortheight;}
附赠打印函数代码帮助大家理解与手动
public static void PrintArray(int[] arrays){if (arrays.length == 0){System.out.println("这是一个空数组");}else{System.out.print("[");for (int i = 0; i < arrays.length; i++) {if(i != arrays.length-1){System.out.print(arrays[i]+" ");}else {System.out.print(arrays[arrays.length-1] + "]");}}}}
总结
以上的算法,只是单列纵队身高排队的实现。而现实生活中,还有很多情况是多列纵队的,进一步的代码实现。留待以后更新。
IDEA运行截图
以上代码均通过了IDEA的调试检验。 ![代码测试一](https://img-blog.csdnimg.cn/20210328125625820.PNG) ![代码测试二](https://img-blog.csdnimg.cn/20210328125625793.PNG)
身高排队算法_高的排中间,矮的站两边【Java实现】相关推荐
- 算法_趣味分数_Question5_列出真分数序列(java实现)
这篇文章讲述的是算法趣味分数部分的列出真分数序列问题的java实现,参考的书籍为清华大学出版社出版,贾蓓等编著的<c语言趣味编程1000例>,如有错误或者不当之处,还望各位大神批评指正. ...
- 算法_数学问题_Question8_猜牌术(java实现)
这篇文章讲述的是算法初级部分的猜牌术问题的java实现,参考的书籍为清华大学出版社出版,贾蓓等编著的<c语言趣味编程1000例>,如有错误或者不当之处,还望各位大神批评指正. 问题描述 魔 ...
- 算法_趣味分数_Question7_分数比大小(java实现)
这篇文章讲述的是算法趣味分数部分的分数比大小问题的java实现,参考的书籍为清华大学出版社出版,贾蓓等编著的<c语言趣味编程1000例>,如有错误或者不当之处,还望各位大神批评指正. 问题 ...
- java编程题身高排队_身高排队算法-(较优解):12个高矮不同的人,排成两排,每排必须是从矮到高排列,而且第二排比对应的第一排的人高,问排列方式有多少种?...
本人对解决算法有兴趣,曾在网上看到过一道阿里巴巴的面试题. 题目是这样的:12个高矮不同的人,排成两排,每排必须是从矮到高排列,而且第二排比对应的第一排的人高,问排列方式有多少种? 所以自己也考虑了一 ...
- 高阶低通滤波算法_高/低算法
高阶低通滤波算法 介绍 在我以前的文章中,我谈到了各种数据库标识符策略,在设计数据库模型时需要注意. 我们得出的结论是,数据库序列非常方便,因为它们在大多数用例中既灵活又高效. 但是,即使具有缓存的序 ...
- java排队算法_贪心算法-排队问题-JAVA
自己最近在学一些算法,试着把网上的贪心算法的例题编出来,JAVA版. [题目描述] 在一个医院B 超室,有n个人要做不同身体部位的B超,已知每个人需要处理的时间为ti,(0 输入数据:第1行一个正整数 ...
- 高并发编程_高并发编程系列:全面剖析Java并发编程之AQS的核心实现
在并发编程领域,AQS号称是并发同步组件的基石,很多并发同步组件都是基于AQS实现,所以想掌握好高并发编程,你需要掌握好AQS. 本篇主要通过对AQS的实现原理.数据模型.资源共享方式.获取锁的过程, ...
- java编程题身高排队_编程初学者入门4_从键盘输入5个人的身高(米),求他们的平均身...
编程初学者入门4_从键盘输入5个人的身高(米),求他们的平均身 编程初学者入门4_从键盘输入5个人的身高(米),求他们的平均身高(米).(C的没什么问题,试着用Java写一下,Java的Scanner ...
- 数据挖掘经典十大算法_条件熵、信息增益介绍
数据挖掘经典算法_条件熵.信息增益介绍 一.条件熵 首先与信息熵进行类比,从信息熵的计算公式中我们知道它是考虑到该随机变量的所有可能取值,即所有可能发生事件所带来信息量的期望.由此顾名思义 条件熵的定 ...
最新文章
- SharePoint 2007 系列(4) -Site Settings
- List遍历过程中删除数据
- 二叉树的基本特性和二叉树的几种基本操作的机制_关于二叉树,你该了解这些!...
- mysql内部_使用mysql中的内部加入
- java时序图工具_基于时序数据库,实现百亿级话单实时全景监控分析
- pr渲染程序选哪个_PR的bug你遇到过几个?
- qt 试用 (3)配置编译源代码及调试
- C#中IEnumerable.OfType()方法的简单使用
- Oracle数据库12cR2(项目实战之二):Linux系统安装Oracle12.2
- map/multimap容器
- pg_rewind 快速角色切换
- 数字滤波器设计工具_数字设计师和代理商的资源和工具
- Android 和 Ios测试的区别
- Real-Time Rendering 4th Edition 实时渲染第四版 读书及翻译计划
- 三种call解释(一): cdcall stdcall naked call等在hook时,保持堆栈平衡
- 【优化模型】报童的诀窍
- 免费的生成GIF和截屏的PC端小工具
- 主分区损坏diskgenius_使用Diskgenius完成磁盘结构损坏且无法读取的的情况
- (imooc笔记)短除法计算算 十进制 八进制 十六进制
- 锤子OS--Smartisan OS
热门文章
- MEET2022智能未来大会今日举行,李开复张亚勤上演巅峰对话
- eNSP搭建USG6000V防火墙教程-web
- 中国电信服务亚运凸显全业务运营优势
- 手把手教你使用U盘安装Ubuntu系统
- FPGA读写Flash模块 Verilog程序设计
- 完成全球92万+集装箱箱况残损检验, 完成上亿集装箱信息识别, 中集飞瞳成熟集装箱码头人工智能,全球集装箱人工智能垂直领域领军者
- windows 远程连接
- 主题 支持 php 7.2,最新七星修改二开正米酷影视7.2完整版/支持自定义解析/支持PHP7.0及以上...
- 黑莓Curve 9360拥有NFC技术
- [Java笔记13] 日期与时间