use a single query and a single loop;
$wp_query->current_post indicates the post position in the loop, starting with zero for the first post;
(($wp_query->current_post %5 == 0 || $wp_query->current_post %5 == 3) ? 'first' : '')
this ternary operator checks for the first and fourth post and adds a css class of .first (as in 'first in line') to be styled with clear:both;.
(($wp_query->current_post %5 <=2) ? ' third' : ' half')
this ternary operator checks for alternating for three and two posts and adds a css class of .third and .half resp, to be styled with float:left;width:33%; and float:left;width:50%; resp.
this is how to include the new css classes into the post_class() -
assuming this is the begin of your post div (example from Twenty Eleven):
<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
then change to:
<article id="post-<?php the_ID(); ?>" <?php $extra = array((($wp_query->current_post %5 == 0 || $wp_query->current_post %5 == 3) ? 'first' : ''),(($wp_query->current_post %5 <=2) ? ' third' : ' half')); post_class($extra); ?>>