Heim >Backend-Entwicklung >PHP-Tutorial >PHP 常见算法【冒泡排序, 快速排序, 插入排序, 取舍排序, 二分法查找, .】

PHP 常见算法【冒泡排序, 快速排序, 插入排序, 取舍排序, 二分法查找, .】

WBOY
WBOYOriginal
2016-06-13 10:38:411026Durchsuche

PHP 常见算法【冒泡排序, 快速排序, 插入排序, 选择排序, 二分法查找, ..】

// 冒泡排序function bubblesort($arr) {    for($i=0,$j=count($arr); $i<$j; $i++) {        for($k=$j-1; $k>$i; $k--) {            if ($arr[$k] < $arr[$k-1]) list($arr[$k-1], $arr[$k]) = array($arr[$k], $arr[$k-1]);        }     }    return $arr;}$arr = array(1,4,14,3,56,23,435,2,234,2,33,23,123);print_r(bubblesort($arr));
// 快速排序function quicksort($arr) {    if(($count = count($arr)) <= 1 ) return $arr;    $base = $arr[0];    $left = $right = array();    for($i=1; $i<$count; $i++) {        if($arr[$i] <= $base) $left[] = $arr[$i];        else $right[] = $arr[$i];    }    $left = quicksort($left);    $right = quicksort($right);    return array_merge($left, array($base), $right);}echo join(',', quicksort(array(1,3,23,5,234,65,6)));?
// 插入排序function insertsort($arr) {    for($i=1, $j=count($arr); $i<$j; $i++) {        $k = $i;        while($k > 0 && $arr[$k-1] > $arr[$k]) {            list($arr[$k], $arr[$k-1]) = array($arr[$k-1], $arr[$k]);            $k--;        }    }    return $arr;}$array=array(10,8,7,5,1,2,3,4);print_r(insertsort($array));

?

// 选择排序, (非递归)function selectsort($arr) {    for($i=0, $j=count($arr); $i<=$j; $i++) {        $min = $i;        $temp = $arr[$i];        for($k=$i+1; $k<$j; $k++) {            if($temp > $arr[$k]) {                $min = $k;                $temp = $arr[$k];            }        }         if($min != $i) list($arr[$min], $arr[$i]) = array($arr[$i], $arr[$min]);    }    return $arr;}$arr = array(9,3,11,23,90,99,12,34,22,87,32);print_r(selectsort($arr));

?

// 选择排序(递归实现)function selectsort2($arr, $start = 0) {    if(($count = count($arr)) == $start + 1) return $arr;    $new = array();    $min = $arr[$start];    $min_index = $start;    for($i=$start+1; $i<$count-1; $i++) {        if($arr[$i] < $min) {            $min = $arr[$i];            $min_index = $i;        }    }    if($arr[$start] != $min) list($arr[$start], $arr[$min_index]) = array($arr[$min_index], $arr[$start]);    return selectsort($arr, $start + 1);}$arr = array(9,3,11,23,90,99,12,34,22,87,32);print_r(selectsort($arr));
?

?

?

<?php// 二分法查找function binarysearch($arr, $value, $start = 0, $end = NULL) {    if($end == NULL) $end = count($arr) - 1;    $index = floor(($start+$end)/2);    $base = $arr[$index];    if($value < $base) return binarysearch($arr, $value, $start, $index-1);    else if($value > $base) return binarysearch($arr, $value, $index+1, $end);    else return $index;}$arr = array(1, 3, 5, 6, 7, 8, 10, 12, 14, 16, 18, 20);$value = 8;echo binarysearch($arr, $value);
?

待续...

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:PHP用代码实现文件上载Nächster Artikel:php 批改文件中变量