在Java中对3个值进行排序的最快方法
我必须按正确的顺序放置3个值并将它们打印到控制台。
一个解决方案是将它们放入一个数组然后对它们进行排序,但我记得(从学校时代开始)比较和排序它们更快,但是我找不到正确的比较顺序。
您能否告诉我如何将3个值与if
语句的最小数量进行比较?
优化这一点毫无意义。 它不会获得任何速度。 O(n!)3仍然只有3 * 2 = 6次操作。 即使O(2 ^ n)也将是8.您可以真正做任何事情来排序这3个值,而不是看到性能上的差异。
编辑
int a, b, c, min, max, med;//assume values are there for abc if( a > b ){ if( a > c ){ max = a; if( b > c ){ med = b; min = c; }else{ med = c; min = b; } }else{ med = a; max = c; min = b; } }else{ if( b > c ){ max = b; if( a > c ){ med = a; min = c; }else{ med = c; min = a; } }else{ med = b; max = c; min = a; } }
冒泡排序只有3个比较操作,在最坏的情况下只有6个赋值(如果与这种情况下插入排序的行为不相同,它将非常相似):
if (a > b) swap(a,b) if (b > c) swap(b,c) if (a > b) swap(a,b) print a,b,c
它不能在少于3的比较中完成,因为数组有n!=6
可能的排列,而ceil(log_2(n!)) = 3
据我所知,Java使用Quicksort算法进行排序 – 这是一种已经优化的方法。 没有速度在这里收获!
- java.net.SocketTimeoutException vs java.net.ConnectException
- 在java程序中添加背景音乐 – 已删除的API警告?
- 初始化ArrayList数组
- 当两个表具有相同的列名时,NonUniqueDiscoveredSqlAliasException
- 无法解密来自文本文件的密文,对称密钥工具。 在java中
- @JsonCreator和mixin通过模块不适用于第三方类
- java.lang.OutOfMemoryError:从URL下载大文件时的Java堆空间
- Hibernate EntityManager,它应该被用作单例吗?
- 为什么运行在服务器模式下的Java会说版本是“混合模式”?