php сортировка
В PHP есть замечательные функции для сортировки массивов данных, но речь пойдет не о них. В данной заметке я разместил примеры реализации алгоритмов сортировок на PHP, так сказать, что бы не отпускать далеко из головы. Подробно расписывать не буду, а буду приводить ссылки на Википедию. Кому надо добавляем в закладки ;)
Примеры сортировок взяты из PHP-песочницы http://phpfiddle.org
- Сортировка пузырьком на PHP
- Сортировка вставками на PHP
- Сортировка слиянием на PHP
- Быстрая сортировка на PHP
- Сортировка выбором на PHP
- Использование примеров сортировок на PHP
Сортировка пузырьком на PHP
//Сортировка пузырьком
function bubbleSort(array $arr) {
$count = count($arr);
if ($count <= 1) {
return $arr;
}
for ($i = 0; $i < $count; $i++) {
for ($j = $count - 1; $j > $i; $j--) {
if ($arr[$j] < $arr[$j - 1]) {
$tmp = $arr[$j];
$arr[$j] = $arr[$j - 1];
$arr[$j - 1] = $tmp;
}
}
}
return $arr;
}
Сортировка вставками на PHP
//Сортировка вставками
function insertSort(array $arr) {
$count = count($arr);
if ($count <= 1) {
return $arr;
}
for ($i = 1; $i < $count; $i++) {
$cur_val = $arr[$i];
$j = $i - 1;
while (isset($arr[$j]) && $arr[$j] > $cur_val) {
$arr[$j + 1] = $arr[$j];
$arr[$j] = $cur_val;
$j--;
}
}
return $arr;
}
Сортировка слиянием на PHP
//Сортировка слиянием
function mergeSort(array $arr) {
$count = count($arr);
if ($count <= 1) {
return $arr;
}
$left = array_slice($arr, 0, (int)($count/2));
$right = array_slice($arr, (int)($count/2));
$left = mergeSort($left);
$right = mergeSort($right);
return merge($left, $right);
}
function merge(array $left, array $right) {
$ret = array();
while (count($left) > 0 && count($right) > 0) {
if ($left[0] < $right[0]) {
array_push($ret, array_shift($left));
} else {
array_push($ret, array_shift($right));
}
}
array_splice($ret, count($ret), 0, $left);
array_splice($ret, count($ret), 0, $right);
return $ret;
}
Быстрая сортировка на PHP
//Быстрая сортировка
function quickSort(array $arr) {
$count= count($arr);
if ($count <= 1) {
return $arr;
}
$first_val = $arr[0];
$left_arr = array();
$right_arr = array();
for ($i = 1; $i < $count; $i++) {
if ($arr[$i] <= $first_val) {
$left_arr[] = $arr[$i];
} else {
$right_arr[] = $arr[$i];
}
}
$left_arr = quickSort($left_arr);
$right_arr = quickSort($right_arr);
return array_merge($left_arr, array($first_val), $right_arr);
}
Сортировка выбором на PHP
//Сортировка выбором
function selectSort(array $arr) {
$count= count($arr);
if ($count <= 1){
return $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;
}
Использование примеров сортировок на PHP
echo "<pre>"; echo "<br>", "Bubble Sorting - 1, 99, 3, 77, 5, 998, 7, 45, 32", "<br>"; $arr = array(1, 99, 3, 77, 5, 998, 7, 45, 32); $reuslt = bubbleSort($arr); print_r($reuslt); echo "<br>", "Insert Sorting - 1, 88, 5, 77, 99, 98, 97, 55, 56, 52, 59, 37", "<br>"; $arr = array(1, 88, 5, 77, 99, 98, 97, 55, 56, 52, 59, 37); $reuslt = insertSort($arr); print_r($reuslt); echo "<br>", "Merge Sorting - 6, 5, 3, 1, 8, 7, 9, 2, 4", "<br>"; $arr = array(6, 5, 3, 1, 8, 7, 9, 2, 4); $reuslt = mergeSort($arr); print_r($reuslt); echo "<br>", "Quick Sorting - 1, 99, 87, 2, 5, 9, 1999, 899, 777", "<br>"; $arr = array(1, 99, 87, 2, 5, 9, 1999, 899, 777); $reuslt = quickSort($arr); print_r($reuslt); echo "<br>", "Select Sorting - 11, 3, 51, 7, 99, 33, 55, 9", "<br>"; $arr = array(11, 3, 51, 7, 99, 33, 55, 9); $reuslt = selectSort($arr); print_r($reuslt);
Информация копипастерам
Внимание! Копирование контента с сайта, возможно только с разрешения администратора. Т.е. Меня! Я скорее всего разрешу Вам это сделать, в обмен на живую ссылку, на статью оригинал.
php сортировка
