sort posts by getPostViews in functions.php

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;
        }
}