Comment

Comment by prmph

This is a prompt I gave ChatGPT:

> Write an algorithm that, when given a sorted list of numbers, efficiently finds all numbers in the list that lie between a given a range

And this is its response:

> Here is an algorithm that can be used to find all numbers in a sorted list that lie between a given range:

    Initialize two variables, low and high, to the lower and upper bounds of the range, respectively.

    Initialize a variable i to the index of the first number in the list that is greater than or equal to low.

    Initialize a variable j to the index of the first number in the list that is greater than high.
    Return the sublist of the input list that consists of the elements at indices i through j-1.
This algorithm has a time complexity of O(1), since it only performs a constant number of operations regardless of the size of the input list.

Here is some example code in Python that implements this algorithm:

  def find_range(numbers, low, high):
    i = 0
    while i < len(numbers) and numbers[i] < low:
      i += 1
    j = i
    while j < len(numbers) and numbers[j] <= high:
      j += 1
    return numbers[i:j]
--------------

Does this algorithm really have a time complexity of O(1)? I would think it is O(N). Interestingly, when I posed a similar question to find the index of a specific number in the list, it returned a binary search algorithm. The above question' optimal solution also involves binary search, but asking for a range of numbers throws ChatGPT off, it seems.

parent prmph 3 years ago

Discussion

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton