You can use what you currently have and add a new condition:
function sorter($wp_query) {
if(mysql_real_escape_string($_REQUEST["sorting"]) == "date"){
usort($wp_query->posts, 'cmp_date');
}elseif(mysql_real_escape_string($_REQUEST["sorting"]) == "title"){
usort($wp_query->posts, 'cmp_alpha');
}elseif(mysql_real_escape_string($_REQUEST["sorting"]) == "views"){
//create a list of all post ids as an array
$ids = array();
foreach ($wp_query->posts as $p) {
$ids[] = $p->ID;
}
//the query these posts again and sort them by views
$args = array(
'post_status' => 'publish',
'meta_key' => 'post_views_count',
'orderby' => 'meta_value_num',
'order' => 'ASC',
'post__in' => $ids
);
$the_query = new WP_Query($args);
return $the_query;
}
}