在"算法简介"(Corman)一书中,练习1.2-2询问了有关比较插入排序和合并排序实现的以下问题.对于大小为n的输入,插入排序以8n ^ 2步进行,而合并排序以64n lg n步进行; n的值是插入排序节拍合并排序?
虽然我对答案感兴趣,但我更感兴趣的是如何逐步找到答案(这样我就可以重复这个过程来比较任何两个给定的算法,如果可能的话).
乍一看,这个问题看起来类似于找到商业微积分中的收支平衡点,这是我5年多前的一个课程,但我不确定所以任何帮助都会受到赞赏.
谢谢
P/S如果我的标签不正确,这个问题被错误分类,或者其他一些惯例被滥用,请将惩罚限制在最低限度,因为这是我第一次发帖提问.
n的最小值是多少,使得在同一台机器上运行时间为100n ^ 2的算法比运行时间为2 ^ n的算法运行得更快?
范围
尽管我对答案很感兴趣,但是我对如何逐步找到答案更感兴趣(以便我可以重复该过程以尽可能比较任何两个给定算法)。
来自麻省理工学院出版社算法书
我试图用BigInteger来计算地球的质量,但实际上并没有增加一些东西.
我用来计算地球质量的公式是:M = ar2/G = 5.98×1024 kg.a是重力加速度(9.8 m/s平方),r是地球的半径((6.4)*(10 ^ 6))和Big-G((6.673)*(10 ^ -11))引力常数.
我应该得到的值是:5.97219×10 ^ 24 kg = 5,972,190,000,000,000,000,000,000,000,但我当前输出的值是:-9353.显然是一个巨大的差异,所以任何帮助将不胜感激.
这是我到目前为止所拥有的......
double bigG = (6.673) * (10^-11);
double radiusSquared = 6371^2;
double acceleration = (10^2); (obviously rounded here from 9.8)
double mass = (acceleration*radiusSquared)/bigG;
BigInteger massBig = new BigDecimal(mass).toBigInteger();
System.out.println("mass of earth: "+massBig);'
Run Code Online (Sandbox Code Playgroud)
我不确定我是否只是输入了一些输入错误,或者我是否未能识别Java的某些基础过程,因为我不熟悉Java和物理.
谢谢
好的,我做了你说的,似乎解决了部分问题......这是更新的代码:
public static void getPlanetMass(){
double bigG = (6.673) * (Math.pow(10, -11));
double radiusSquared = (Math.pow(6371, 2));
double acceleration = (Math.pow(9.8,2)); //(obviously rounded here from 9.8) …Run Code Online (Sandbox Code Playgroud)