<?php
/*
* ( )
* , , ; 。
*/
function insertSort($arr)
{
if(!is_array($arr) || count($arr)==0)
{
return $arr;
}
$count = count($arr);
for($i=1; $i<$count; $i++)
{
if(isset($arr[$i]))
{
$tmp = $arr[$i];//
$j = $i -1; //
while($arr[$j] > $tmp)
{ // ,
$arr[$j+1] =$arr[$j]; // , ,
$arr[$j] = $tmp;
$j--;
}
}
}
return $arr;
}
/*
* ( )
* ( ) , , 。
*/
function selectSort($arr)
{
if(!is_array($arr) || count($arr) == 0)
{
return $arr;
}
$count = count($arr);
for($i=0; $i<$count; $i++)
{
$k = $i;
for($j=$i+1; $j<$count; $j++)
{
if ($arr[$k] > $arr[$j])
$k = $j; //
if ($k != $i)
{
$tmp = $arr[$i];
$arr[$i] = $arr[$k];
$arr[$k] = $tmp;
}
}
}
return $arr;
}
/*
* ( )
* , ,
*/
function bubbleSort($array)
{
$count = count($array);
if ($count <= 0)
{
return false;
}
for($i=0; $i<$count; $i++)
{
for($j=$count-1; $j>$i; $j--)
{
if($array[$j] < $array[$j-1])
{ //
$tmp = $array[$j];
$array[$j] = $array[$j-1];
$array[$j-1] = $tmp;
}
}
}
return $array;
}
/*
* ( )
*
*/
function quickSort($array)
{
if (count($array) <= 1)
{
return $array;
}
$key = $array[0];
$left_arr = array();
$right_arr = array();
for ($i=1; $i<count($array); $i++)
{
if ($array[$i] <= $key)
{
$left_arr[] = $array[$i];
}
else
{
$right_arr[] = $array[$i];
}
}
$left_arr = quickSort($left_arr);
$right_arr = quickSort($right_arr);
return array_merge($left_arr, array($key), $right_arr);
}
/**
*
* strOrder asc desc
*/
function sortByVal($arr,$strOrder='asc')
{
if(!is_array($arr) || count($arr)==0)
{
return $arr;
}
$arrReturn = array();
foreach($arr as $key=>$val)
{
$arrKey[] = $key;
$arrVal[] = $val;
}
$count = count($arrVal);
if($count)
{
// key
for($key=0;$key<$count;$key++)
{
$arrKeyMap[$key] = $key;
}
//
for($i=0;$i<$count;$i++)
{
for($j = $count-1; $j>$i;$j--)
{
//<
$bol = $strOrder == 'asc' ? $arrVal[$j]<$arrVal[$j-1] : $arrVal[$j]>$arrVal[$j-1];
if($bol){
$tmp = $arrVal[$j];
$arrVal[$j] = $arrVal[$j-1];
$arrVal[$j-1] = $tmp;
// , key
$keytmp = $arrKeyMap[$j];
$arrKeyMap[$j] = $arrKeyMap[$j-1];
$arrKeyMap[$j-1] = $keytmp;
}
}
}
if(count($arrKeyMap))
{
foreach ($arrKeyMap as $val)
{
$arrReturn[] = $arrKey[$val];
}
}
return $arrReturn;
}
}
/**
*
*/
function arraySortByVal($arr,$keys,$type='asc'){
$keysvalue = $new_array = array();
foreach ($arr as $k=>$v){
$keysvalue[$k] = $v[$keys];
}
if($type == 'asc'){
asort($keysvalue);
}else{
arsort($keysvalue);
}
reset($keysvalue);
foreach ($keysvalue as $k=>$v){
$new_array[$k] = $arr[$k];
}
return $new_array;
}
?>