Jump to content
php.lv forumi

Vārdadienu arrajs


Pentiums

Recommended Posts

Ejot cauri masīvam, protams:

foreach ($vd as $month => $days)
{
foreach ($days as $day => $names)
{
	if (in_array("vaards", $names))
	{
		return "$month-$day";
	}
}
}

return null;

 

Bet nu daudz prātīgāk būtu to iebāzt SQL datubāzē un tad ar vienu kveriju izselektēt. Vai arī, ja nu SQL datubāzi lietot ir tik ļoti ļoti neiespējami, tad glabāt tos visus vārdus vēl vienā masīvā - formā vārds => datums.

Link to comment
Share on other sites

uztaisam int masīvu $mas, kur katrā elementā glabājas objekts ar parametriem 'vārds' un 'datums'.

sakārtojam augošā secībā, pēc vārda.

Uztaisam funkciju, kur salīdzina, kurš strings ir lielāks pēc alfabēta kārtības.

Taisam bināro meklēšanu:

Ja vārdu skaits ir 0..1024, tad:

1)izrēķinām vidējo k=(0+1024)/2=512;

2)tālāk salīdzinam $mas[k]->vards ar savu vajadzīgo vārdu, ja tavs vārds ir lielāks, tad jaunais intervāls ir 513..1024, ja mazāks, tad 0..511, ja vienāds, tad vārds atrasts. un beidzam meklēšanu.

3)Ja beigu robeža ir mazāka vai vienāda ar sākuma robežu, tad vārda nav, ja nē, tad atgriežamies pie 1) punkta ar jaunajām intervāla vērtībām.

Edited by codez
Link to comment
Share on other sites

uztaisam int masīvu $mas, kur katrā elementā glabājas objekts ar parametriem 'vārds' un 'datums'.

sakārtojam augošā secībā, pēc vārda.

...

Taisam bināro meklēšanu:

 

codez, es pieņemu, ka kolēģiem, kam jālabo un jāpapildina tevis rakstītās sistēmas ir ļoti interesanti...

Link to comment
Share on other sites

Kaitnieks: Tas jau nav nekas neparasts, ko codez iesaka - lietot bināro meklēšanu sakārtotā masīvā. Daudzās situācijās tas ir ļoti izdevīgi - nevajag būvēt nekādas papildus struktūras (binārus sakārtotus kokus), viss notiek tai pat masīvā. Šis paņēmiens ir ļoti populārs.

Bet nu php gadījumā es gan tam jēgu nesaredzu.

Link to comment
Share on other sites

bubu tainībā, pēdējā laikā risināju lielā daudzumā algoritmiskoss uzdevumu ar C++ palīdzību, tāpēc ātrumā sanāca nedaudz pa "krutu" risinājums, ja ir tā, kā saka bubu, ka PHP asociatīvais arrajs tiek veidots kā heštabula, tad protams šādi būs ātrāk.

 

bubu, man neizdevās atrast pierādījumus, ka PHP asociatīvais arrajs tiek veidots kā heštabula, varbūt tev ir kāda norāde?

Link to comment
Share on other sites

Īsti nezinu vai tas kur tā ir uzrakstīts, bet esmu php sourcē skatījies. Tur ir heštabulas - zend_exectue.c failā zend_fetch_dimension_address fjā. Tur tiek izmantota zend_hash_next_index_insert fja, kas darbojas ar heštabulām (zend_hash.c/h faili).

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...