IT技术博客大学习 共学习 共进步

基本排序算法的PHP实现

PHPec 2009-10-17 14:32:14 浏览 3,522 次

以下是代码片段:

set_time_limit(0);  
//冒泡  
function bubble($arr){  
 for($i = 0; $i < count($arr); $i++){  
        for($j = count($arr)-1; $j > $i; $j--){  
            if($arr[$j] < $arr[$j-1]){  
    $temp = $arr[$j];  
    $arr[$j] = $arr[$j-1];  
    $arr[$j-1] = $temp;  
            }  
        }  
 }  
 return $arr;  
}  
//选择  
function select($arr){  
  for ($i = 0; $i < count($arr); $i++) {  
  $lowIndex = $i;  
  for ($j = count($arr) - 1; $j > $i; $j--) {  
            if ($arr[$j] < $arr[$lowIndex]) {  
                $lowIndex = $j;  
            }  
        }  
  $temp = $arr[$lowIndex];  
  $arr[$lowIndex] = $arr[$j];  
  $arr[$j] = $temp;  
    }  
 return $arr;  
}  
  
//插入  
function insert($arr){  
 for($i = 1;$i < count($arr); $i++){  
  for($j = $i; ($j>0) && ($arr[$j] < $arr[$j-1]); $j--){  
   $temp = $arr[$j-1];  
   $arr[$j-1] = $arr[$j];  
   $arr[$j] = $temp;  
  }  
 }  
 return $arr;  
}  
$arr = range(1,1000);  
shuffle($arr);  
//benchmark  
require_once("Benchmark/Timer.php");  
$timer = new Benchmark_Timer();  
$timer -> start();  
bubble($arr);  
$timer -> setMarker('bubble');  
select($arr);  
$timer -> setMarker('select');  
insert($arr);  
$timer -> setMarker('insert');  
sort($arr);  
$timer -> setMarker('php');  
$timer -> display();  
?> 

建议继续学习

  1. 如何使用1M的内存排序100万个8位数 (阅读 12,225)
  2. 快速排序(Quicksort)的Javascript实现 (阅读 11,543)
  3. 腾讯-1亿个数据取前1万大的整数-题解答 (阅读 9,944)
  4. 深入浅出插入类排序算法(直接插入, 折半插入, 希尔排序) (阅读 7,424)
  5. 深入浅出交换类排序算法(冒泡排序,快速排序) (阅读 6,984)
  6. Java程序员必知的8大排序算法 (阅读 5,562)
  7. Mysql中的排序优化 (阅读 5,522)
  8. Vim(gVim)对排序的妙用 (阅读 5,284)
  9. 快速排序详细分析 (阅读 4,922)
  10. 深入浅出选择类排序算法(简单选择排序,堆排序) (阅读 4,543)