PHP Searching and Sorting Algorithm: Cocktail sort
PHP Searching and Sorting Algorithm: Exercise-7 with Solution
Write a PHP program to sort a list of elements using Cocktail sort.
Cocktail shaker sort (also known as bidirectional bubble sort, cocktail sort, shaker sort, ripple sort, shuffle sort, or shuttle sort ) is a variation of bubble sort that is both a stable sorting algorithm and a comparison sort. The algorithm differs from a bubble sort in that it sorts in both directions on each pass through the list. This sorting algorithm is only marginally more difficult to implement than a bubble sort and solves the problem of turtles in bubble sorts. It provides only marginal performance improvements, and does not improve asymptotic performance; like the bubble sort, it is not of practical interest, though it finds some use in education.
Visualization of shaker sort :
Sample Solution :
PHP Code :
<?php
// Function to perform Cocktail Shaker Sort on an array
function cocktailSort($my_array)
{
// If the input is a string, convert it to an array of characters
if (is_string($my_array))
$my_array = str_split(preg_replace('/\s+/','',$my_array));
// Loop until no swaps are made
do {
$swapped = false; // Flag to track if any elements were swapped
// Forward pass through the array
for($i = 0; $i < count($my_array); $i++) {
// Check if the next element exists
if(isset($my_array[$i+1])) {
// Compare adjacent elements and swap if necessary
if($my_array[$i] > $my_array[$i+1]) {
list($my_array[$i], $my_array[$i+1]) = array($my_array[$i+1], $my_array[$i]);
$swapped = true; // Set swapped flag to true
}
}
}
// If no swaps were made in the forward pass, break out of the loop
if ($swapped == false) break;
$swapped = false; // Reset swapped flag
// Backward pass through the array
for($i = count($my_array) - 1; $i >= 0; $i--) {
// Check if the previous element exists
if(isset($my_array[$i-1])) {
// Compare adjacent elements and swap if necessary
if($my_array[$i] < $my_array[$i-1]) {
list($my_array[$i], $my_array[$i-1]) = array($my_array[$i-1], $my_array[$i]);
$swapped = true; // Set swapped flag to true
}
}
}
} while($swapped); // Continue loop until no swaps are made
return $my_array; // Return the sorted array
}
// Test array
$test_array = array(3, 0, 2, 5, -1, 4, 1);
echo "Original Array :\n";
echo implode(', ',$test_array ); // Display original array
echo "\nSorted Array\n:";
echo implode(', ',cocktailSort($test_array)). PHP_EOL; // Display sorted array
?>
Output:
3, 0, 2, 5, -1, 4, 1 Sorted Array : -1, 0, 1, 2, 3, 4, 5
Explanation:
In the exercise above,
- The code defines a function "cocktailSort()" that implements the Cocktail Shaker Sort algorithm.
- The function takes an array '$my_array' as input and sorts it in ascending order.
- If the input is a string, it converts it to an array of characters.
- The function uses a do-while loop to perform the sorting.
- Inside the loop, it performs two passes through the array: a forward pass and a backward pass.
- In each pass, it compares adjacent elements and swaps them if they are in the wrong order.
- The loop continues until no more swaps are made, indicating the array is sorted.
- Finally, the sorted array is returned.
- The code then tests the sorting function with a sample array, displaying the original and sorted arrays.
Flowchart :
PHP Code Editor:
Have another way to solve this solution? Contribute your code (and comments) through Disqus.
Previous: Write a PHP program to sort a list of elements using Bubble sort.
Next: Write a PHP program to sort a list of elements using Comb sort.
What is the difficulty level of this exercise?
Test your Programming skills with w3resource's quiz.
It will be nice if you may share this link in any developer community or anywhere else, from where other developers may find this content. Thanks.
https://w3resource.com/php-exercises/searching-and-sorting-algorithm/searching-and-sorting-algorithm-exercise-7.php
- Weekly Trends and Language Statistics
- Weekly Trends and Language Statistics