PHP选择排序

选择排序大约和冒泡排序一样简单了吧 , 不过它的效率要比冒泡排序好很多 , 冒泡排序作为公认最慢的排序算法 ... 这个已经无疑问了 - - ...


选择排序非常简单的代码 :

// 交换
function swap(& $a, & $b) {
  $temp = $a;
  $a = $b;
  $b = $temp;
}

function selectSort($a){
  $l = count($a);
  for($i=0; $i<$l; $i++) {
    $max = $i;
    for($j=$i+1; $j<$l; $j++) $a[$j] < $a[$max] && $max = $j;
    $max !== $i && swap($a[$i], $a[$max]);
  }
  return $a;
}


当然 , 函数 selectSort 还可以写的更简单

function selectSort($a) {
  $l = count($a);
  for($i=0; $i<$l; $i++) for($j=$i; $j<$l; $j++) $a[$j]<$a[$i] && swap($a[$i], $a[$j]);
  return $a;
}


当然 , 第一种写法显然交换次数更少 , 算法更优 .


用法 :

echo(implode(",", selectSort($a)));// $a 是一个无序数组 , 例如 $a=range(1,100);shuffle($a);


嘎嘎 , 如果有更好的思想 , 请跟帖哈

本文出自 “一个纠结的PHP程序员” 博客,请务必保留此出处http://johnsylm.blog.51cto.com/1480623/1429353

PHP选择排序,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。