Azh*_*din 12 algorithm data-structures
在研究数据结构和算法时,我同时遇到这两个术语,但我无法区分访问和搜索.例如,阵列的时间复杂度包括在搜索O(n)时O(1)的访问时间.
假设一条街道,我们将其称为“列表街道”。在名单街上,有房子。第一所房屋的地址是List Street 101。第二套房子的地址是List Street 102。等等等等。
假设我们知道我们的朋友Element住在List Street的第四宫,那么我们知道 Element必须住在List Street 104。我们可以立即访问他们的房子,因为我们确切知道街道上的位置。我们只需要访问 1所房子即可找到Element。
但是,如果我们不知道Element住的房子怎么办?我们将不得不敲每个房子的门,并询问Element是否住在那里。在这种情况下,我们需要访问4栋房屋,直到到达List Street 104才能找到Element。
同样的想法适用于数组。数组存储数据类型。每个数据类型具有相同的大小,例如,int通常为4个字节。如果一个int数组开始于内存地址0x0001,我们想访问任何元素,它需要的时间是相同的访问array[2],因为它确实array[102]为它array[9999]。因为我们知道起始地址,并且知道每种数据类型的大小,所以我们可以立即跳转到内存中的那个位置。O(1)
但是,如果您要搜索特定的元素,则需要访问每个元素并测试它是否为所需的元素,直到找到所需的元素。对于包含5个元素的数组,您可能必须搜索5次。O(5)。对于具有900个元素的数组,您可能必须搜索900次,直到找到所需的元素。O(900)。对于包含n元素的数组,您将搜索n时间。上)