<?php
// SmoothSort Algorithm
require_once('module.smoothsort.php');
// Some simple example :o)
$array_data = array( 3, 2, 4, 1 );
cls__module_smoothsort::smoothsort_run( $array_data );
var_dump( $array_data );
/*
Result:
array(4) {
[0]=>int(1)
[1]=>int(2)
[2]=>int(3)
[3]=>int(4)
}
*/
// Now where the magic evolves
class foo {
private $class_field = null;
function __construct( $class_field ) {
$this->class_field( $class_field );
}
function class_field( $class_field = null ) {
if( $class_field !== null ) $this->class_field = $class_field;
return $this->class_field;
}
}
function sort_foo_ascending_on_class_field( $foo_a, $foo_b ) {
// Swap foo a&b in array ?
if( $foo_a->class_field() < $foo_b->class_field() ) return true;
// or don't swap
return false;
}
$array_data = array(
new foo( 1 ),
new foo( 4 ),
new foo( 6 ),
new foo( 2 ),
new foo( 3 ),
new foo( 5 )
);
cls__module_smoothsort::smoothsort_run( $array_data, 'sort_foo_ascending_on_class_field' );
var_dump( $array_data );
/*
Result:
array(6) {
[0]=>object(foo)#1 (1) {
["class_field":"foo":private]=>
int(1)
}
[1]=>object(foo)#4 (1) {
["class_field":"foo":private]=>
int(2)
}
[2]=>object(foo)#5 (1) {
["class_field":"foo":private]=>
int(3)
}
[3]=>object(foo)#2 (1) {
["class_field":"foo":private]=>
int(4)
}
[4]=>object(foo)#6 (1) {
["class_field":"foo":private]=>
int(5)
}
[5]=>object(foo)#3 (1) {
["class_field":"foo":private]=>
int(6)
}
}
*/
// Ok, ok there is something called usort() doing this trick...
// So this was just "for fun", doing SmoothSort Algorithm in PHP ;o)
?>
|