|
/**
* Description: gets the location of the central point.
*
* @ Param array $ array
* @ Param int $ left
* @ Param int $ right
* @ Param string $ field
* @ Return int
*/
Function fetcharrayray( & $ array, $ left, $ right, $ field)
{
// Benchmark Definition
$ Stand = $ array [$ left];
// Traverse the Array
While ($ left <$ right ){
While ($ left <$ right & $ array [$ right] [$ field] >=$ stand [$ field]) {
$ Right --;
}
If ($ left <$ right ){
$ Array [$ left ++] = $ array [$ right];
}
While ($ left <$ right & $ array [$ left] [$ field] <= $ stand [$ field]) {
$ Left ++;
}
If ($ left <$ right ){
$ Array [$ right --] = $ array [$ left];
}
}
// Obtain the central point
$ Array [$ left] = $ stand;
Return $ left;
}
/**
* Description: quick sorting of the main program
*
* @ Param array $ array
* @ Param int $ begin
* @ Param int $ end
* @ Param string $ field
*/
Function quickSort (& $ array, $ begin, $ end, $ field)
{
// Variable definition
$ Activities = null;
If ($ begin <$ end ){
$ Fields = fetcharrayray( $ array, $ begin, $ end, $ field );
QuickSort ($ array, $ begin, $ fields-1, $ field );
QuickSort ($ array, $ struct + 1, $ end, $ field );
}
}
2. Call example:
$ Array = array (
Array (
'Name' => "xiao ",
'Age' => 3
),
Array (
'Name' => 'wang ',
'Age' => 1
),
Array (
'Name' => 'chen ',
'Age' => 2
),
Array (
'Name' => 'zhengyi ',
'Age' => 4
),
Array (
'Name' => 'chai ',
'Age' => 14
)
);
$ Begin = getTime ();
QuickSort ($ array, 0, count ($ array)-1, 'age ');
Print_r ($ array );
$ End = getTime ();
$ Spend = $ end-$ begin;
Echo "time spent:". $ spend. "seconds n ";
Function getTime ()
{
List ($ msec, $ sec) = explode ("", microtime ());
Return (float) $ msec + (float) $ sec;
} |