A body recovered from the crashed AirAsia plane was wearing a life jacket, raising new questions about how the disaster unfolded.

Seven bodies have been recovered from the sea, some fully clothed, which could indicate the Airbus A320-200 was intact when it hit the water. That would support a theory that it suffered an aerodynamic stall.

The fact that one person put on a life jacket suggests those on board had time before the aircraft hit the water, or before it sank. And yet the pilots did not issue a distress signal.

Authorities in Surabaya were making preparations to receive and identify bodies, including arranging 130 ambulances to take victims to a police hospital and collecting DNA from relatives.

Most of those on board were Indonesians. No survivors have been found.

Rescuers believe they have found the plane on the ocean floor off Borneo, after sonar detected a large, dark object beneath the water near where debris and bodies were found on the surface.

Ships and planes had been scouring the Java Sea for flight QZ8501 since Sunday (28 December), when it lost contact during bad weather about 40 minutes into its flight from the Indonesian city of Surabaya to Singapore.

A pilot who works for a Gulf carrier said the life jacket indicated the cause of the crash was not "catastrophic failure". Instead, the plane could have stalled and then come down, possibly because its instruments iced up and gave the pilots inaccurate readings.

"There was time. It means the thing didn't just fall out of the sky," said the pilot, who declined to be identified.

Strong wind and waves have hampered the search. "We are all standing by," Dwi Putranto, heading the air force search effort in Pangkalan Bun, told Reuters.

"If we want to evacuate bodies from the water, it's too difficult. The waves are huge and it's raining."