Yes, Marill can learn Surf.
The most easiest way to get a Pokemon that can surf is get a Zizagoon,it can learn surf.
Surf to an island
to get surf in sapphire you have to go and beat your dad.then go next door to the left.that is wallys house witch you will need to get surf,but you will need to talk to the old man i belive it is.
Surf Right of Lilycove
You have to surf there from Sootopolis or Mossdeep.
you have to surf from Lincoln .
You obtain HM03 Surf after defeating Norman the fifth gym leader, and Wally's father will reward you with surf.
surf
Try to surf you may find it
Fly to Pacifilog town. Surf North, and you should hit some rocks. Turn and surf east. Keep surfing until you see a gap in the rocks. Go through it, and surf north. You should find a sandy island with a building on it. That's Spear Pillar.
To get surf in ruby, sapphire and emerald you need to beat the 5th gym (your dad) and go to wally's house (same town) then one of the people in wally's house should give you the surf HM