Java 关于时间复杂度O(1),O(n),O(logn),O(nlogn)的问题
我目前正在研究arraylist的时间复杂性,特别是关于访问和搜索。我不太清楚哪一个是哪一个 所以我知道当索引为O1时,访问的时间复杂度。 但是2和3是正确的吗 当arraylist已排序且您不知道索引处于打开状态时,在arraylist上搜索 当您需要从未排序的arraylist中查找数据而不知道其索引处于打开状态时的时间复杂性Java 关于时间复杂度O(1),O(n),O(logn),O(nlogn)的问题,java,arraylist,time-complexity,Java,Arraylist,Time Complexity,我目前正在研究arraylist的时间复杂性,特别是关于访问和搜索。我不太清楚哪一个是哪一个 所以我知道当索引为O1时,访问的时间复杂度。 但是2和3是正确的吗 当arraylist已排序且您不知道索引处于打开状态时,在arraylist上搜索 当您需要从未排序的arraylist中查找数据而不知道其索引处于打开状态时的时间复杂性 2和3的答案应该相同吗?或者已排序/未排序的arraylist会改变时间复杂度?在对arraylist进行线性搜索时,您正在查找某些元素。因为您不知道数据的索引是什么
2和3的答案应该相同吗?或者已排序/未排序的arraylist会改变时间复杂度?在对arraylist进行线性搜索时,您正在查找某些元素。因为您不知道数据的索引是什么,所以必须遍历每个元素,直到找到要查找的项 在最坏的情况下,您必须一直走到最后一个元素。大Oh作为算法的上限。在最坏的情况下,我们必须遍历所有n个元素,因此算法是打开的
如果对arraylist进行了排序,则可以使用二进制搜索,即Olog n当通过arraylist进行线性搜索时,您正在查找某些元素。因为您不知道数据的索引是什么,所以必须遍历每个元素,直到找到要查找的项 在最坏的情况下,您必须一直走到最后一个元素。大Oh作为算法的上限。在最坏的情况下,我们必须遍历所有n个元素,因此算法是打开的
如果对arraylist进行了排序,则可以对2使用二进制搜索,这取决于搜索方式。如果执行顺序搜索(例如使用),则无论数据是否排序,性能都处于启用状态 可以使用二进制搜索算法在OLOGN中搜索已排序的列表或数组 可以使用在上执行二进制搜索。正如javadoc所说: 该方法在logn时间内运行,用于提供接近恒定时间位置访问的随机访问列表。如果指定的列表未实现接口且较大,则此方法将执行基于迭代器的二进制搜索,该搜索将执行链接遍历和Olog n元素比较
对数组进行二进制搜索可以使用。对于2,这取决于搜索的方式。如果执行顺序搜索(例如使用),则无论数据是否排序,性能都处于启用状态 可以使用二进制搜索算法在OLOGN中搜索已排序的列表或数组 可以使用在上执行二进制搜索。正如javadoc所说: 该方法在logn时间内运行,用于提供接近恒定时间位置访问的随机访问列表。如果指定的列表未实现接口且较大,则此方法将执行基于迭代器的二进制搜索,该搜索将执行链接遍历和Olog n元素比较
对数组进行二进制搜索可以使用。2和3听起来像是同一件事:在未排序的数组列表中搜索数据。很抱歉,这是一个输入错误。因此,2应该是从排序的arraylistindex unknown中搜索,3应该是从未排序的arraylistindex unknown2和3中搜索,听起来好像它们是一样的:在未排序的arraylist中搜索数据。很抱歉,这是一个输入错误。所以2应该是从排序的ArrayListinex未知中搜索,3应该是从未排序的ArrayListinex未知中搜索谢谢你的快速回复!我得到排序的arraylist和二进制搜索的时间复杂度是Olon n。但是如果您只是从排序的arraylist中进行搜索而不是二进制搜索,那么它是否应该打开?是的,因为您可以搜索最后一个元素,所以它仍然会打开?非常感谢您的快速回复!我得到排序的arraylist和二进制搜索的时间复杂度是Olon n。但是,如果您只是从排序的arraylist中进行搜索而不是二进制搜索,那么它是否应该启用?是的,因为您仍然可以搜索最后一个元素