The numbers generally go from the older end of the street, odd on the left, even on the right. As the population thickens, some larger lots get split into smaller ones and houses are built there. These inherit the house number of the original lot, with a character suffix, so there's sometimes a sequence goint 2, 2a, 2b, 2e, 2c, 2d, 4, 6... Why is e between b and c? Because it was built last, the b lot got split again.
Now in novogradnja the things may get complicated. As one building is technically one house, it would get one number... so your address, if you happened to live in one of those, would look like "so and so street 64, ulaz III, stan 12", with 64 being the house number, III the number of the entrance, 12 the apartment number.
Then they started with a more indented architecture, where the building's floorplan wouldn't be a single rectangle, but a series of rectangles in a jagged layout. Someone came up with a bright idea that one such rectangular segment be called "lamela". Lamela is the clutch plate... So your house number would now, in case your lamela had more than one entrance, be like "so and so 64, L2/III/12" - 2nd lamela, 3rd entrance, apt 12. At least they stopped including floors.
Then it was somewhat simplified by having one house number per entrance, so one building would hold house numbers 2, 4, 6 and 8, next one would be 10, 12, 14 and 16 and so on. A block of buildings would face four streets, and in some cases these would take the numbers of the street nearest to them, in others all would have the numbers in the same street, wherever the numbering started. The order of these numbers can be very confusing, because there are many different layouts. Worst case, the entrance you're looking for is 124, you are around #4, and you go toward larger numbers around the whole block until you find that the layout is circular and you went a whole kilometer instead of just 50m in the opposite direction.