存在阵列相关问题,要求是时间复杂度为O(n),空间复杂度为O(1).

如果我使用Arrays.sort(arr),并将一个for循环用于一个循环,例如:

public static int hello(int[]A){
  Arrays.sort(A);
  for(int i=0;i<A.length;i++){
     ....................
  }
  return ....;

}

所以循环将花费O(n)时间.我的问题是:将Arrays.sort()花费更多的时间?如果我使用Arrays.sort(),这个时间复杂度仍然是O(n)?并且Arrays.sort()会花费更多的空间吗?

解决方法

我假设你在这里谈论Java.

So the loop will cost O(n) time,my question is that will Arrays.sort() cost more time?

是的,Arrays.sort(int[])在我所知道的所有Java标准库实现中,是基于比较的排序,因此是must have worst-case complexity Ω(n log n)的一个例子.特别是,Oracle Java 7对整数重载使用了双轴快速排序变体,实际上它具有一个Ω n2)最坏的情况.

and will Arrays.sort() cost more space?

很可能会使用ω(1)空格(这意味着另一个是,空间使用不是O(1)).虽然不可能实现基于比较的排序,只有恒定的额外空间,这是非常不切实际的.

也就是说,在某些条件下,可以按线性时间对特定类型的数据进行排序,例如:

> http://en.wikipedia.org/wiki/Counting_sort
> http://en.wikipedia.org/wiki/Pigeonhole_sort
> http://en.wikipedia.org/wiki/Radix_sort

使用恒定范围的输入整数(例如对于某些常数C),abs(A [i])<= C),则计数排序和基数排序使用的确只有O(n)个时间和O(1)空间,所以这可能是有用的.

java – 将Arrays.sort()增加时间复杂性和时空复杂度?的更多相关文章

  1. 如何用JavaScript学习算法复杂度

    这篇文章主要介绍了如何用JavaScript学习算法复杂度,对算法感兴趣的同学,一定要看一下

  2. Java如何分析算法的时间和空间复杂度

    这篇文章主要介绍了Java如何分析算法的时间和空间复杂度,在计算机科学中,计算复杂性解释了算法的性能。文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下

  3. JavaScript时间复杂度和空间复杂度

    这篇文章主要介绍了JavaScript时间复杂度和空间复杂度,时间复杂度和空间复杂度是衡量一个算法是否优秀的标准,通常我们比较两个算法时会用预先估算和事后统计,下文详细介绍,需要的朋友可以参考一下

  4. [机器学习]谈谈正则化

    同时1范数是0范数的最优凸近似minimizeL2范数就是指向量各元素的平方和然后求平方根。

  5. 12. 机器学习基石-How can Machine Learn Better? - Regularization

    如公式所示,这种Hypothesis我们称为H其中C为常数,H称为regularizedhypothesisset。该表达式称为增广错误用Eaug表示,其中wTw为正则化项。这种regularization不仅可以用在多项式的hypothesis中,还可以应用在logisticregression等其他hypothesis中,都可以达到防止过拟合的效果。很显然,dvc比较大,因为它代表了整个hypothesisset,但是dEFF(H,A)比较小,因为由于regularized的影响,限定了w只取一小部分

  6. sku组合查询算法探索

    什么是SKU问题来自垂直导购线周会的一次讨论,sku组合查询,这个题目比较俗,是我自己取得。当sku属性只是2×2的时候,还是很容易计算的。演示框最下面是可用的sku组合。如果sku属性组合元素的总和数用m表示,结果数据长度为n,那么每次选择后,需要的算法大致步骤是m*n。正则表达式很不稳定,万一sku组合中有一些特殊字符,就可能导致一个正则匹配没能匹配到我们想要的表达式。

  7. 机器学习中防止过拟合的处理方法

    此时便发生了过拟合,即模型的复杂度升高,但是该模型在除训练集之外的数据集上却不work。为了防止过拟合,我们需要用到一些方法,如:earlystopping、数据集扩增、正则化、Dropout等。Earlystopping对模型进行训练的过程即是对模型的参数进行学习更新的过程,这个参数学习的过程往往会用到一些迭代方法,如梯度下降学习算法。Earlystopping便是一种迭代次数截断的方法来防止过拟合的方法,即在模型对训练数据集迭代收敛之前停止迭代来防止过拟合。

  8. L2正则为什么能保证控制过拟合

    著作权归作者所有。作者:石国瑞链接:http://www.zhihu.com/question/20178589/answer/55440780来源:知乎L2正则为什么能保证控制过拟合。这里面就有个哲学思想,叫做奥卡姆剃刀法则,简单来说这个想法就是“能简单说的话,不要复杂的说”。L2正则项就能代表模型的复杂度,根据奥卡姆,如果同样效果那么越简单的模型泛化效果越好。所以最优化过程中尽量追求小的L2的值就会提高泛化能力,也就抑制了过拟合的问题

  9. 使用正则表达式提高用户密码的复杂度和安全性

    上述的正则表达式代表了用户密码输入的全是数字。

  10. 【机器学习基础】正则化

    引言上一小节中,我们介绍了过拟合的概念,在机器学习中最大的危险就是过拟合,为了解决过拟合问题,通常有两种办法,第一是减少样本的特征(即维度),第二就是我们这里要说的“正则化”。参考资料机器学习中的范数规则化之(一)L0、L1与L2范数机器学习中的范数规则化之(二)核范数与规则项参数选择作者JasonDing简书主页原文地址正则化

随机推荐

  1. 基于EJB技术的商务预订系统的开发

    用EJB结构开发的应用程序是可伸缩的、事务型的、多用户安全的。总的来说,EJB是一个组件事务监控的标准服务器端的组件模型。基于EJB技术的系统结构模型EJB结构是一个服务端组件结构,是一个层次性结构,其结构模型如图1所示。图2:商务预订系统的构架EntityBean是为了现实世界的对象建造的模型,这些对象通常是数据库的一些持久记录。

  2. Java利用POI实现导入导出Excel表格

    这篇文章主要为大家详细介绍了Java利用POI实现导入导出Excel表格,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  3. Mybatis分页插件PageHelper手写实现示例

    这篇文章主要为大家介绍了Mybatis分页插件PageHelper手写实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  4. (jsp/html)网页上嵌入播放器(常用播放器代码整理)

    网页上嵌入播放器,只要在HTML上添加以上代码就OK了,下面整理了一些常用的播放器代码,总有一款适合你,感兴趣的朋友可以参考下哈,希望对你有所帮助

  5. Java 阻塞队列BlockingQueue详解

    本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景,通过实例代码介绍了Java 阻塞队列BlockingQueue的相关知识,需要的朋友可以参考下

  6. Java异常Exception详细讲解

    异常就是不正常,比如当我们身体出现了异常我们会根据身体情况选择喝开水、吃药、看病、等 异常处理方法。 java异常处理机制是我们java语言使用异常处理机制为程序提供了错误处理的能力,程序出现的错误,程序可以安全的退出,以保证程序正常的运行等

  7. Java Bean 作用域及它的几种类型介绍

    这篇文章主要介绍了Java Bean作用域及它的几种类型介绍,Spring框架作为一个管理Bean的IoC容器,那么Bean自然是Spring中的重要资源了,那Bean的作用域又是什么,接下来我们一起进入文章详细学习吧

  8. 面试突击之跨域问题的解决方案详解

    跨域问题本质是浏览器的一种保护机制,它的初衷是为了保证用户的安全,防止恶意网站窃取数据。那怎么解决这个问题呢?接下来我们一起来看

  9. Mybatis-Plus接口BaseMapper与Services使用详解

    这篇文章主要为大家介绍了Mybatis-Plus接口BaseMapper与Services使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  10. mybatis-plus雪花算法增强idworker的实现

    今天聊聊在mybatis-plus中引入分布式ID生成框架idworker,进一步增强实现生成分布式唯一ID,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

返回
顶部