您的位置:首页 > 编程语言 > PHP开发

php实现基础排序算法

2014-03-18 16:07 288 查看
<?php
//冒泡排序
function bubble () {
$arr = array(13,56,10,1,65,4,9);
$len = count($arr);
for ($i=0;$i<$len-1;$i++) {
for ($j=$i+1;$j<$len;$j++) {
if ($arr[$i]<$arr[$j]) {
$tmp = $arr[$i];
$arr[$i] = $arr[$j];
$arr[$j] = $tmp;
}
}
}
return $arr;
}

//插入排序
function insert() {
$arr = array(13,56,10,1,65,4,9);
$len = count($arr);
for ($i=1;$i<$len;$i++) {
$tmp = $arr[$i];
$j = $i-1;
while ($j>=0 && $tmp<$arr[$j]) {
$arr[$j+1] = $arr[$j];
$j--;
}
$arr[$j+1] = $tmp;
}
return $arr;
}

//选择排序
function select() {
$arr = array(13,56,10,1,65,4,9);
$len = count($arr);
for ($i=0;$i<$len;$i++) {
for ($j=$i+1;$j<$len;$j++) {
if($arr[$i]>$arr[$j]) {
$tmp = $arr[$i];
$arr[$i] = $arr[$j];
$arr[$j] = $tmp;
}
}
}
return $arr;
}

//快速排序(递归)
function quick($arr) {
$len = count($arr);
if ($len <= 1) {
return $arr;
}
$arr_l = array();
$arr_r = array();
$key = $arr[0];
for ($i=1;$i<$len;$i++) {
if ($arr[$i]>$key) {
$arr_r[] = $arr[$i];
} else {
$arr_l[] = $arr[$i];
}
}
$arr_l = quick($arr_l);
$arr_r = quick($arr_r);
return array_merge($arr_l, array($key), $arr_r);
}
// 	$arr = array(13,56,10,1,65,4,9);
// 	print_r(quick($arr));
// 	return ;

//二分法查找
function erfen() {
$num = 2;
$arr = array(1,2,4,5,6);
$len = count($arr);
if ($len == 0) {
return -1;
}
$start = 0;
$end = $len-1;
while ($start<$end) {
$mid = ($len+1)/2;
if ($mid == $num) {
return $mid;
} else if ($mid > $num) {
$end = $mid-1;
} else if ($mid < $num) {
$start = $mid+1;
}
}
//return -1;//如果找不到返回-1;
}


有一个问题,是我这个没学过数据结构的人的一点疑惑。。选择排序和冒泡排序有什么区别?感觉代码实现上,差不多的感觉。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  排序算法 php