这种算法相对于冒泡排序而言,是找到了每趟循环中最适合的那位数的位置才选择与它进行交换。
其优势是减少了不必要的交换操作,故性能更优。
PHP代码实现参考:
/** * 选择排序 * 相对于冒泡排序而言,是找到了每趟循环中最适合的那位数的位置才选择与它进行交换。 * 将每一趟循环中的第一个元素,与该趟中最小的元素交换 * @param unknown $arr * @return unknown */ function selection_sort($arr){ $count = count($arr); for($i=0;$i<$count-1;$i++){ // 外层控制循环趟数 $min_index = $i; // 记录当前趟最小值下标,默认为该趟的第一个元素下标 for ($j=$i+1;$j<$count;$j++){ // 内层控制每趟对比的次数 if( $arr[$min_index]>$arr[$j] ){ // 如果遇到更小的值,则更新最小记录值与其索引 $min_index = $j; } } if( $min_index!=$i ){ // 将当前趟的首个元素与该趟中最小的元素进行交换 $temp = $arr[$i]; $arr[$i] = $arr[$min_index]; $arr[$min_index] = $temp; } } return $arr; }返回主目录 [经典排序算法][PHP实现集锦]
参考:
http://www.cnblogs.com/kkun/archive/2011/11/23/selection_sort.html