BG Development


  Reply to this topicStart new topicStart Poll

> Намиране на най-близко число в масив
goofy666
  Публикувано на: 06-12-2017, 20:13
Quote Post



Име: Мартин Асенов
Група: Потребител
Ранг: Новопостъпил

Мнения: 2
Регистриран на: 19.06.17



Здравейте, трябва ми алгоритъм който да намира най-близко число в масив.
Търсих много във stackoverflow и разни други референций обаче всичките алгоритми, които видях бяха за намиране на най-близко по голямо число.
int[] numbers = { 1, 5, 7, 13, 18 };
int targetNum = 15;
повечето алгоритми са от типа на :
numbers.OrderBy(x => Math.Abs((long)x - targetNum)).First();
Които вадят 18 а в моя случай най-близкото число е 13.
Ако някой може да ми помогне ще съм му благодарен icon_smile.gif.
Поздрави.
PMEmail Poster
Top
r4nd0m
Публикувано на: 06-12-2017, 20:32
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 1020
Регистриран на: 05.09.07



Не разбрах - демек искаш да излезе 18?


--------------------
"Happiness only real when shared."
PMEmail Poster
Top
Bender
Публикувано на: 06-12-2017, 20:42
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 4873
Регистриран на: 19.06.14



CODE

public final class Main {
   public static void main(String[] args) {
       final int x = 15;
       final int[] data = {1, 5, 7, 13, 18};

       int bestMatch = data[0];
       for (int i = 1, shortestDistance = abs(data[0] - x); i < data.length & shortestDistance > 0; i++) {
           int currentDistance = abs(data[i] - x);
           if (currentDistance < shortestDistance) {
               shortestDistance = currentDistance;
               bestMatch = data[i];
           }
       }
       System.out.println(bestMatch);
   }
}


--------------------
Живота е спагети, кода за да работи добре трябва да го наподобява - Дон Реба
...
Живеем в греховни времена, какво очакваш богоугоден и благочестив код ли? - Дон Реба
...
много положителна енергия черпя от вас двамата,единият комунистически девствен,другият яко яхнал асемблерните розови понита - saruman
...
Рано или късно усерите на Виндофс разбират че стоят от неправилната страна на хуя. - ici
PM
Top
r4nd0m
Публикувано на: 06-12-2017, 21:12
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 1020
Регистриран на: 05.09.07



Ето с един глупав хак

CODE
var result = numbers
               .OrderBy(x => Math.Abs((long)x - targetNum))
               .Skip(1)
               .First();


Това мнение е било редактирано от r4nd0m на 06-12-2017, 21:35


--------------------
"Happiness only real when shared."
PMEmail Poster
Top
Антон Яначков
Публикувано на: 07-12-2017, 09:58
Quote Post



Име: Антон Яначков
Група: Потребител
Ранг: Активен

Мнения: 167
Регистриран на: 27.07.16



QUOTE (goofy666 @ 06-12-2017, 20:13)
Здравейте, трябва ми алгоритъм който да намира най-близко число в масив.
Търсих много във stackoverflow и разни други референций обаче всичките алгоритми, които видях бяха за намиране на най-близко по голямо число.
int[] numbers = { 1, 5, 7, 13, 18 };                              
int targetNum = 15;
повечето алгоритми са от типа на :
numbers.OrderBy(x => Math.Abs((long)x - targetNum)).First();
Които вадят 18 а в моя случай най-близкото число е 13.
Ако някой може да ми помогне ще съм му благодарен icon_smile.gif.
Поздрави.

Задачата е доста общо формулирана. Най-близкото число в общия случай може да е самото число, ако се съдържа в масива, но ако не се съдържа може спокойно да се две различни числа равно отдалечени от зададеното. Трябва ясно да формулираш кое от двете равно отдалечени числа ти трябва. А може би ти трябват и двете.

Това мнение е било редактирано от Антон Яначков на 07-12-2017, 09:59
PMEmail PosterUsers Website
Top
wqw
Публикувано на: 07-12-2017, 12:57
Quote Post


Group Icon
Име: Владимир Висулчев
Група: VIP
Ранг: Почетен член

Мнения: 5625
Регистриран на: 10.06.04



QUOTE (goofy666 @ 06-12-2017, 20:13)
Които вадят 18 а в моя случай най-близкото число е 13.

Това си вади 13. . . Тролиш ли ни нещо?

cheers,
</wqw>


--------------------
PMEmail PosterUsers Website
Top
1 потребители преглеждат тази тема в момента (1 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

Topic Options Reply to this topicStart new topicStart Poll

 


Copyright © 2003-2015 | BG Development | All Rights Reserved
RSS 2.0