php的排序问题
不想说什么!!直接上代码!!不对或失误地方,望大家指正!!谢谢!!
<?php
//冒泡法排序
function Mypop(&$arr){
$temp = 0;
$flag = false;
for($i = 0;$i< count($arr) - 1;$i++){
for($j = 0;$j < count($arr) - 1 - $i;$j++)
{
if($arr[$j] >$arr[$j+1])
{
$temp = $arr[$j];
$arr[$j] = $arr[$j+1];
$arr[$j +1] = $temp;
$flag = true;
}
}
if(!$flag)
{
break;
}
}
$flag = false;
}
//选择法排序
function selectSort(&$arr){
for($i = 0 ;$i<=count($arr)-1;$i++)
{
$minVal = $arr[$i];
$minIndex = $i;
for($j = $i+1;$j<count($arr);$j++)
{
if($minVal > $arr[$j])
{
$minVal = $arr[$j];
$minIndex = $j;
}
}
$temp = $arr[$i];
$arr[$i]= $arr[$minIndex];
$arr[$minIndex ]= $temp;
}
}
//插入法排序
function insertSort(&$arr){
for($i = 1;$i<count($arr);$i++)
{
$insertVal = $arr[$i];
$insertIndex = $i-1;
while($insertIndex >=0&&$insertVal<$arr[$insertIndex])
{
$arr[$insertIndex + 1] = $arr[$insertIndex];
$insertIndex --;
}
$arr[$insertIndex + 1] = $insertVal;
}
}
//快速法排序
function quickSort($arr)
{
$len = count($arr);
if($len <= 1) {
return $arr;
}
$key = $arr[0];
$left_arr = array();
$right_arr = array();
for($i=1; $i<$len; $i++){
if($arr[$i] <= $key){
$left_arr[] = $arr[$i];
} else {
$right_arr[] = $arr[$i];
}
}
$left_arr = quickSort($left_arr);
$right_arr = quickSort($right_arr);
return array_merge($left_arr, array($key), $right_arr);
}
$arr = array(9,8,65,97,76,13,27);
//Mypop($arr);
//selectSort ($arr);
insertSort($arr);
// print_r(quickSort($arr));
print_r($arr);
?>