浅谈算法——选择排序

选择排序

function select_2($_array)
{
    for($i=0;$i<count($_array)-1;$i++)
    {   
        $key = $i; 
        for($j=$i+1;$j<count($_array);$j++)
        {
            if ($_array[$j]<$_array[$key])
            {
                $key = $j; 
            }
        }
        $tmp = $_array[$key];
        $_array[$key] = $_array[$i];
        $_array[$i] = $tmp;
    }   
    return $_array;
}

//27秒
$start = time();
print_r(select_2(rand_array(10000)));
$end = time();
echo "简单的选择排序需要的时间" . ($end - $start) . "秒;";
性能分析

  比较次数O(n^2),总的比较次数N=(n-1)+(n-2)+...+1=n*(n-1)/2。交换次数O(n),最好情况是,已经有序,交换0次;最坏情况是,逆序,交换3(n-1)次。交换次数比冒泡排序少多了,由于交换所需CPU时间比比较所需的CPU时间多,n值较小时,选择排序比冒泡排序快。 

posted @ 2013-02-19 19:17  李秋  阅读(181)  评论(0编辑  收藏  举报