[Last Call] Learn about multicloud storage options and how to improve your company's cloud strategy. Register Now

x
Solved

# Nearest neighbour algorithm

Posted on 2002-07-28
Medium Priority
394 Views
Hi,

I'm trying to write a 'nearest neighbour algorithm' which basically finds a certain number of values in an array that are the closest to a certain value. For example, if I have an array of values:

18, 23, 22, 25, 20, 19, 18, 19, 25

I want to get the 6 values that have the least difference between the value 20. So in this case it would be the values:

18, 18, 19, 19, 22, 23

The first thing I did was to get the differences between each value and 20:

public void kneighbour(int[] values) {

int number = values.length;
float one = -1;
float middle;
float[] diff = new float[values.length];

for(int i = 0; i< number; i++) {
diff[i] = values[number/2] - values[i];
if(diff[i] < 0) {
diff[i] = diff[i]*one;
}
System.out.println("This difference is : " + diff[i]);
}

Once I have all the differences how would I go about getting the six least differences??

Guster

0
Question by:Guster
[X]
###### Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

• Help others & share knowledge
• Earn cash & points
• 2
• 2

LVL 1

Expert Comment

ID: 7183509
sort the differences in descending order.
0

LVL 1

Accepted Solution

ID: 7183897
>>Once I have all the differences how would I go about
>> getting the six least differences??

sort the differences in ascending order , ie from least to greatest ...
0

Author Comment

ID: 7183927
how would I be able to relate those differences back to their original array values??
0

Author Comment

ID: 7183934
I think I got it
0

LVL 1

Expert Comment

ID: 7183982
OK. Glad to be of help.

Feel free to pass on any other prob.

Cheers

0

## Featured Post

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

After being asked a question last year, I went into one of my moods where I did some research and code just for the fun and learning of it all.  Subsequently, from this journey, I put together this article on "Range Searching Using Visual Basic.NET …
By the end of 1980s, object oriented programming using languages like C++, Simula69 and ObjectPascal gained momentum. It looked like programmers finally found the perfect language. C++ successfully combined the object oriented principles of Simula w…
Viewers learn about the “for” loop and how it works in Java. By comparing it to the while loop learned before, viewers can make the transition easily. You will learn about the formatting of the for loop as we write a program that prints even numbers…
This tutorial explains how to use the VisualVM tool for the Java platform application. This video goes into detail on the Threads, Sampler, and Profiler tabs.
###### Suggested Courses
Course of the Month13 days, 4 hours left to enroll