浅谈算法——选择排序
选择排序
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值较小时,选择排序比冒泡排序快。