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

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);
?

待续...

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
C语言return的用法详解C语言return的用法详解Oct 07, 2023 am 10:58 AM

C语言return的用法有:1、对于返回值类型为void的函数,可以使用return语句来提前结束函数的执行;2、对于返回值类型不为void的函数,return语句的作用是将函数的执行结果返回给调用者;3、提前结束函数的执行,在函数内部,我们可以使用return语句来提前结束函数的执行,即使函数并没有返回值。

docker start起不来怎么办docker start起不来怎么办Oct 21, 2022 pm 03:43 PM

docker start起不来的解决办法:1、检查运行状态,然后通过“echo 3 &gt; /proc/sys/vm/drop_caches”命令释放被占用的内存;2、通过“$netstat -nltp|grep ...”命令检查端口是否已经被占用,如果上线后发现占有,则改为可用端口再重启即可。

counta和count的区别counta和count的区别Nov 20, 2023 am 10:01 AM

Count函数用于计算指定范围内数字的个数。它忽略文本、逻辑值和空值,但会将空单元格计算在内,Count函数只计算包含实际数字的单元格数量。而CountA函数用于计算指定范围内非空单元格的个数。它不仅计算包含实际数字的单元格,还计算包含文本、逻辑值和公式等非空单元格的数量。

Java中return和finally语句的执行顺序是怎样的?Java中return和finally语句的执行顺序是怎样的?Apr 25, 2023 pm 07:55 PM

源码:publicclassReturnFinallyDemo{publicstaticvoidmain(String[]args){System.out.println(case1());}publicstaticintcase1(){intx;try{x=1;returnx;}finally{x=3;}}}#输出上述代码的输出可以简单地得出结论:return在finally之前执行,我们来看下字节码层面上发生了什么事情。下面截取case1方法的部分字节码,并且对照源码,将每个指令的含义注释在

使用C#中的Array.Sort函数对数组进行排序使用C#中的Array.Sort函数对数组进行排序Nov 18, 2023 am 10:37 AM

标题:C#中使用Array.Sort函数对数组进行排序的示例正文:在C#中,数组是一种常用的数据结构,经常需要对数组进行排序操作。C#提供了Array类,其中有Sort方法可以方便地对数组进行排序。本文将演示如何使用C#中的Array.Sort函数对数组进行排序,并提供具体的代码示例。首先,我们需要了解一下Array.Sort函数的基本用法。Array.So

简单明了的PHP array_merge_recursive()函数使用方法简单明了的PHP array_merge_recursive()函数使用方法Jun 27, 2023 pm 01:48 PM

在进行PHP编程时,我们常常需要对数组进行合并。PHP提供了array_merge()函数来完成数组合并的工作,不过当数组中存在相同的键时,该函数会覆盖原有的值。为了解决这个问题,PHP在语言中还提供了一个array_merge_recursive()函数,该函数可以合并数组并保留相同键的值,使得程序的设计变得更加灵活。array_merge

如何使用PHP中的array_combine函数将两个数组拼成关联数组如何使用PHP中的array_combine函数将两个数组拼成关联数组Jun 26, 2023 pm 01:41 PM

在PHP中,有许多强大的数组函数可以使数组的操作更加方便和快捷。当我们需要将两个数组拼成一个关联数组时,可以使用PHP的array_combine函数来实现这一操作。这个函数实际上是用来将一个数组的键作为另一个数组的值,合并成一个新的关联数组。接下来,我们将会讲解如何使用PHP中的array_combine函数将两个数组拼成关联数组。了解array_comb

Vue3怎么使用setup语法糖拒绝写returnVue3怎么使用setup语法糖拒绝写returnMay 12, 2023 pm 06:34 PM

Vue3.2setup语法糖是在单文件组件(SFC)中使用组合式API的编译时语法糖解决Vue3.0中setup需要繁琐将声明的变量、函数以及import引入的内容通过return向外暴露,才能在使用的问题1.在使用中无需return声明的变量、函数以及import引入的内容,即可在使用语法糖//import引入的内容import{getToday}from&#39;./utils&#39;//变量constmsg=&#39;Hello!&#39;//函数func

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
2 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
Repo: How To Revive Teammates
1 months agoBy尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: How To Get Giant Seeds
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Integrate Eclipse with SAP NetWeaver application server.

EditPlus Chinese cracked version

EditPlus Chinese cracked version

Small size, syntax highlighting, does not support code prompt function

Dreamweaver Mac version

Dreamweaver Mac version

Visual web development tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

VSCode Windows 64-bit Download

VSCode Windows 64-bit Download

A free and powerful IDE editor launched by Microsoft