Kezdőoldal » Számítástechnika » Programozás » Hogyan találhatom meg a...

Hogyan találhatom meg a legközelebbi dátumot egy tömbben?

Figyelt kérdés

A legközelebbi alatt azt értem, hogy a mostani dátumnál későbbi és hozzá legközelebb lévő.


Egy tömbben tárolok születésnapokat (hónap és nap) és ebből kéne kiválasztani a legközelebbit.


Az itt nem működik, hogy növekvő sorrendbe rendezem és megnézem egy foreach-ben, melyik lesz legelőször nagyobb a mostani dátumnál, mert ha év végén nézzük akkor lehet hogy a legközelebbi január 2-án jönne, amit a program így nem ismerne fel, mert kisebb annak a dátumnak az értéke, mint a mostanié.


Milyen algoritmussal lehet kiválasztani?


Php-ban van a program, de pszeudokódot is megértem, az a lények, hogy az algoritmus meglegyen.



2017. szept. 19. 22:25
1 2
 1/11 anonim ***** válasza:
De mukodne sorbarendezessel, egyszer vegigmesz az osszesen, ha nincs talalat nagyobb datumra akkor logikusan a tomb legkisebb elemet kell venni, az a kovetkezo ev elso datuma.
2017. szept. 19. 22:40
Hasznos számodra ez a válasz?
 2/11 A kérdező kommentje:
Köszönöm!
2017. szept. 19. 22:44
 3/11 anonim ***** válasza:

Pl ilyesmi modon:


sort($datumok);

$next = $datumok[0];


foreach ($datumok as $datum){

if($datum > date('m-d')){

$next = $datum;

break;

}

}

2017. szept. 19. 22:47
Hasznos számodra ez a válasz?
 4/11 anonim ***** válasza:
58%

Feltételes maximumkiválasztással.

A sorbarendezés elég nagy overhead a semmiért.

2017. szept. 19. 22:55
Hasznos számodra ez a válasz?
 5/11 anonim ***** válasza:
Például átváltod a dátumokat UNIX időbélyegre (amivel egy egész számot kapsz) strtotime függvénnyel. Innentől kezdve igen egyszerű dolgod van (két számot kell kivonni egymásból, hogy megkapd a különbséget).
2017. szept. 19. 23:09
Hasznos számodra ez a válasz?
 6/11 anonim ***** válasza:
0%

Azt azért hozzátenném, hogy egy valódi nyelvben (nem PHP féle borzadályban) a megoldás 1 sor:

var closestFutureDate = dates.Where(date => date > DateTime.Now).Min();

2017. szept. 19. 23:16
Hasznos számodra ez a válasz?
 7/11 anonim ***** válasza:
#4 maximum 366 elemu tombnel azert meg phpnal is erzekelhetetlen a kulonbseg, van egy hatar az olvashatosag es a mikrooptimalizalas kozott amit neha felesleges atlepni, ettol fuggetlenul nyilvan igazad van, de ez egy szkriptnyelv amiben tobb beepitett funkcio is olyan lassu, hogy jobban jar az ember ha ujrairja akar szinten phpban.
2017. szept. 19. 23:17
Hasznos számodra ez a válasz?
 8/11 anonim ***** válasza:
#6 de nem datumokrol hanem honap nap parosokrol vam szo, nem lehet ilyen egyszeruen kezelni, es ha nincs talalat kell a legkisebb datum is. Nem is olvastad el a leirast :D
2017. szept. 19. 23:24
Hasznos számodra ez a válasz?
 9/11 A kérdező kommentje:
Köszönöm szépen a válaszokat, működik.
2017. szept. 19. 23:58
 10/11 anonim ***** válasza:
Ne feledd el lekezelni a szökőéveket :D elvégre 0,068% az esélye hogy fenruàr 29-én született valaki. :)
2017. szept. 20. 00:15
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!