1 Reply Latest reply on Apr 17, 2007 1:51 PM by 807606

    Find the closest Integer to a given Integer in a Vector/List


      I want to get the index of the element in a vector or list which is the closest value to the given value, BUT THE VALUE SHOULD NOT BE GREATER THAN the given value!

      See the example code:
      public int getIndexOfClosestEntry(Integer numberToCompare)
          Vector<Integer> v = new Vector<Integer>();
         //insert Code here to get the closest value to numberToCompare
      In the example above you can see i have a vector with the values, 2,4,8 and 29. Lets say the parameter numberToCompare is 7. Then i want that the method returns the index "1" because the value 4 is the closest AND NOT GREATER than the given parameter with value 7.

      Can anybody help me to find a good solution? (Also mind that the vector can have about 1000 entries or more)

        • 1. Re: Find the closest Integer to a given Integer in a Vector/List
          Most of these biggest/smallest/greenest/etc problems are got at the same way:

          (1) Start with a sensible value for the "result". Often the first element of the list.

          (2) Write a loop that goes through the list. Compare the list item with the result to see if it is bigger/smaller/greener/etc. If it is it can replace the result.

          (3) Once the loop finishes the result represents the biggest/smallest/greenest/etc element in the list.

          Your version of the problem adds a couple of small details to be resolved: First, as well as the "result" (the biggest/smallest/greenest/etc so far) you have to remember its index in the list. And, secondly, the first element in the list may not be what I described in (1) as a suitable starting value for "result" - indeed you must be prepared to cope with the case where there is no valid index to return from getIndexOfClosestEntry().