w3resource

PHP Array Exercises : Sort an array of positive integers using the Bead-Sort Algorithm

PHP Array: Exercise-10 with Solution

Write a PHP program to sort an array of positive integers using the Bead-Sort Algorithm.

According to Wikipedia "Bead-sort is a natural sorting algorithm, developed by Joshua J. Arulanandham, Cristian S. Calude and Michael J. Dinneen in 2002. Both digital and analog hardware implementations of bead sort can achieve a sorting time of O(n); however, the implementation of this algorithm tends to be significantly slower in software and can only be used to sort lists of positive integers".

Input array : Array ( [0] => 5 [1] => 3 [2] => 1 [3] => 3 [4] => 8 [5] => 7 [6] => 4 [7] => 1 [8] => 1 [9] => 3 )

Sample Solution:

<?php
function columns($uarr)
{
$n=$uarr;
if (count($n) == 0)
 return array();
else if (count($n) == 1)
 return array_chunk($n[0], 1);
array_unshift($uarr, NULL);
 $transpose = call_user_func_array('array_map', $uarr);
return array_map('array_filter', $transpose);
}
function bead_sort($uarr)
{
foreach ($uarr as $e)
 $poles []= array_fill(0, $e, 1);
return array_map('count', columns(columns($poles)));
}
echo 'Original Array : '.'
';
print_r(array(5,3,1,3,8,7,4,1,1,3));
echo '
'.'After Bead sort : '.'
';
print_r(bead_sort(array(5,3,1,3,8,7,4,1,1,3)));
?>

Sample Output:

Original Array :                                            
Array                                                       
(                                                           
    [0] => 5                                                
    [1] => 3                                                
    [2] => 1                                                
    [3] => 3                                                
    [4] => 8                                                
    [5] => 7                                                
    [6] => 4                                                
    [7] => 1                                                
    [8] => 1                                                
    [9] => 3                                                
)                                                           
                                                            
After Bead sort :                                           
Array                                                       
(                                                            
    [0] => 8                                                
    [1] => 7                                                
    [2] => 5                                                
    [3] => 4                                                
    [4] => 3                                                
    [5] => 3                                                
    [6] => 3                                                
    [7] => 1                                                
    [8] => 1                                                
    [9] => 1                                                
) 

Flowchart:

Flowchart: Sort an array of positive integers using the Bead-Sort Algorithm

PHP Code Editor:

Contribute your code and comments through Disqus.

Previous: Write a PHP script to calculate and display average temperature, five lowest and highest temperatures.
Next: Write a PHP program to merge (by index) the specified two arrays.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Follow us on Facebook and Twitter for latest update.

PHP: Tips of the Day

Returns all elements in an array except for the first one

Example:

<?php
function tips_tail($items)
{
  return count($items) > 1 ? array_slice($items, 1) : $items;
}

print_r(tips_tail([1, 5, 7]));
?> 

Output:

Array
(
    [0] => 5
    [1] => 7
)