PHP 各种排序算法实现代码

yipeiwu_com6年前PHP代码库
复制代码 代码如下:

<?php
// 功能: PHP实现各种排序算法
// Author: windlike
// Datetime: 2007-06-09

// 冒泡排序
function BubbleSort($arr){
$num = count($arr);
for($i=1;$i<$num;$i++){
for($j=$num-1;$j>=$i;$j--){
if($arr[$j]<$arr[$j-1]){
$iTemp = $arr[$j-1];
$arr[$j-1] = $arr[$j];
$arr[$j] = $iTemp;
}
}
}
return $arr;
}

// 交换法排序
function ExchangeSort($arr){
$num = count($arr);
for($i=0;$i<$num-1;$i++){
for($j=$i+1;$j<$num;$j++){
if($arr[$j]<$arr[$i]){
$iTemp = $arr[$i];
$arr[$i] = $arr[$j];
$arr[$j] = $iTemp;
}
}
}
return $arr;
}

// 选择法排序
function SelectSort($arr){
$num = count($arr);
for($i=0;$i<$num-1;$i++){
$iTemp = $arr[$i];
$iPos = $i;
for($j=$i+1;$j<$num;$j++){
if($arr[$j]<$iTemp){
$iTemp = $arr[$j];
$iPos = $j;
}
}
$arr[$iPos] = $arr[$i];
$arr[$i] = $iTemp;
}
return $arr;
}

// 插入法排序
function InsertSort($arr){
$num = count($arr);
for($i=1;$i<$num;$i++){
$iTemp = $arr[$i];
$iPos = $i-1;
while(($iPos>=0) && ($iTemp<$arr[$iPos])){
$arr[$iPos+1] = $arr[$iPos];
$iPos--;
}
$arr[$iPos+1] = $iTemp;
}
return $arr;
}

// 快速排序
function QuickSort($arr){
$num = count($arr);
$l=$r=0;
for($i=1;$i<$num;$i++){
if($arr[$i] < $arr[0]){
$left[] = $arr[$i];
$l++;
}else{
$right[] = $arr[$i];
$r++;
}
}
if($l > 1){
$left = QuickSort($left);
}
$new_arr = $left;
$new_arr[] = $arr[0];
if($r > 1){
$right = QuickSort($right);
}
for($i=0;$i<$r;$i++){
$new_arr[] = $right[$i];
}
return $new_arr;
}

$arr = array(7,1,6,5,2);
$arr_new = QuickSort($arr);
echo "<pre>";
print_r($arr_new);
echo "</pre>";
?>

相关文章

解读PHP的Yii框架中请求与响应的处理流程

一、请求(Requests) 请求: 一个应用的请求是用 yii\web\Request 对象来表示的,该对象提供了诸如 请求参数(译者注:通常是GET参数或者POST参数)、HTTP头...

php+jQuery+Ajax实现点赞效果的方法(附源码下载)

本文实例讲述了php+jQuery+Ajax实现点赞效果的方法。分享给大家供大家参考,具体如下: 数据库设计 先准备两张表,pic表保存的是图片信息,包括图片对应的名称、路径以及图片“赞...

二招解决php乱码问题

二招解决php乱码问题

php网页出现乱码一般是在建立数据库时用的编码和php网页的编码不同造成的, 用phpmyadmin建立的数据库如果你不指定编码他默认是latin1_swedish_ci 编码,既瑞典语...

PHP中的integer类型使用分析

integer 可以已10进制,8进制,16进制表示。 用八进制表示的时候,数字需要已0(零)开头; 用十六进制表示的时候,数字需要已0x(零x)或者0X(零大写X)开头; intege...

php通过两层过滤获取留言内容的方法

本文实例讲述了php通过两层过滤获取留言内容的方法。分享给大家供大家参考,具体如下: //两层过滤,获取留言的内容 $str='<div id="read_111111" st...