基本的排序算法php,php四种基础排序算法

原标题:php四种基础排序算法

曾经有网友问我关于面试题的问题,今天就发一个面试题笔试经常会出的排序算法,大家可以参考一下,如有问题可以给我留言。

/**

* php四种基础排序算法的运行时间比较

* @authors Jesse (jesse152@163.com)

* @date 2016-08-11 07:12:14

*/

//冒泡排序法

function bubbleSort($array){

$temp = 0;

for($i = 0;$i < count($array) -1;$i++){

for($j = 0;$j < count($array) - 1 -$i;$j++){

if($array[$j] > $array[$j+1]){ //从小到大排列

$temp = $array[$j];

$array[$j] = $array[$j+1];

$array[$j+1] = $temp;

}

}

}

}

//选择排序法

function selectSort($array){

$temp = 0;

for($i = 0;$i < count($array) - 1;$i++){

$minVal = $array[$i]; //假设$i就是最小值

$minValIndex = $i;

for($j = $i+1;$j < count($array);$j++){

if($minVal > $array[$j]){ //从小到大排列

$minVal = $array[$j]; //找最小值

$minValIndex = $j;

}

}

$temp = $array[$i];

$array[$i] = $array[$minValIndex];

$array[$minValIndex] = $temp;

}

}

//插入排序法

function insertSort($array){ //从小到大排列

//先默认$array[0],已经有序,是有序表

for($i = 1;$i < count($array);$i++){

$insertVal = $array[$i]; //$insertVal是准备插入的数

$insertIndex = $i - 1; //有序表中准备比较的数的下标

while($insertIndex >= 0 && $insertVal < $array[$insertIndex]){

$array[$insertIndex + 1] = $array[$insertIndex]; //将数组往后挪

$insertIndex--; //将下标往前挪,准备与前一个进行比较

}

if($insertIndex + 1 !== $i){

$array[$insertIndex + 1] = $insertVal;

}

}

}

//快速排序法

function quickSort($array){

if(!isset($array[1]))

return $array;

$mid = $array[0]; //获取一个用于分割的关键字,一般是首个元素

$leftArray = array();

$rightArray = array();

foreach($array as $v){

if($v > $mid)

$rightArray[] = $v; //把比$mid大的数放到一个数组里

if($v < $mid)

$leftArray[] = $v; //把比$mid小的数放到另一个数组里

}

$leftArray = quickSort($leftArray); //把比较小的数组再一次进行分割

$leftArray[] = $mid; //把分割的元素加到小的数组后面,不能忘了它哦

$rightArray = quickSort($rightArray); //把比较大的数组再一次进行分割

return array_merge($leftArray,$rightArray); //组合两个结果

责任编辑:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/528049.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php io流 读取wav,记php中的io流---帮助理解

//注意&#xff1a;当读到文件末尾的时候会返回-1.正常情况下是不会返回-1的。public static void main(String[] args) throws IOException {File fnew File("aaa.txt"); //定位文件位置InputStream innew FileInputStream(f); //创建字节输入流连接到文件byte[] bn…

php获取jsp的session的值,在JSP或Servlet中获取session数量

enumsul.getUserList();int i0;while(enums.hasMoreElements()){out.println(enums.nextElement());out.println(" ");if(i10){out.println("");}}out.println("当前在线的用户数&#xff1a;"i);out.println("退出登录");out.clos…

php如何查看上传的文件大小,PHP设置最大上传文件大小

一、修改php.ini文件。找到php中的php.ini文件&#xff0c;用写字板打开&#xff1a;1、查找post_max_size&#xff0c;指通过表单POST给PHP的所能接收的最大值&#xff0c;包括表单里的所有值&#xff0c;默认为8M&#xff0c;看你自己需要进行改变。2、查找File Uploads&…

java xy,java – 某个z深度的xy位置

我强烈建议你研究一些线性代数或矩阵数学用于3d图形.它既有趣又简单,但比SO答案要长一点.我会尝试:)免责声明&#xff1a;我不知道你正在使用的API&#xff01;看起来你正在为一个位置返回3个坐标(通常称为顶点).但是你也提到了一个投影矩阵,该函数有4个坐标.通常,着色器或API将…

django mysql 游标,MySQL Cursor 存储过程之游标与相关循环

简单介绍游标在检索出来的行中&#xff0c;前进或者后退一行或多行&#xff0c;就需要用到所谓的“游标”。游标不是某个SELECT语句&#xff0c;但是它是被该语句检索出来的结果集。几个特点&#xff1a;MySQL游标只能用于存储过程(和函数)。游标是不能滚动的&#xff0c;也就是…

java 8 optional 类,Java8新特性-Optional类

Optional 类(java.util.Optional) 是一个容器类&#xff0c;代表一个值存在或不存在&#xff0c;原来用 null 表示一个值不存在&#xff0c;现在 Optional 可以更好的表达这个概念。并且可以避免空指针异常。常用方法&#xff1a;Optional.of(T t) : 创建一个 Optional 实例Opt…

java 进度条jsp,jsp进度条_jsp技巧

开始页面:start.jsp状态页面:status.jspJSP进度条setTimeout(“locationstatus.jsp”, 1000);JSP进度条结果: %CELLPADDING0 CELLSPACING2> percent; i - 10) { %> 正在执行完成尚未开始已停止停止页面:stop.jsp业务逻辑bean:TaskBean.javapackage progress;import java.…

覆盖php配置文件,配置 – 用另一个文件覆盖php-fpm池配置值

必须自定义新服务器的php-fpm池配置,我想知道是否有可能/允许/建议有一个新的池文件,该名称在原始文件之后按字母顺序排列,其中只有值覆盖初始配置.原始配置位于/etc/php/7.0/fpm/pool.d,名为www.conf.看来,根据与安装相关的页面,工程师直接修改原件(保存初始值的副本).例如.[w…

子主题function php,php – 带有依赖项的子主题

我正在尝试创建一个儿童主题.父主题有一个style.css和all,我正在查看wp_enqueue_style()函数,它说你可以包含依赖项.这意味着主题自己的style.css可以是活动的,而在我的子主题中,如果我在style.css中指定相同的规则,它应该覆盖它.但依赖是一个句柄数组.我如何找到这些手柄&…

matlab节点导纳阵求逆,关于利用矩阵稀疏技术求解节点导纳矩阵的MATLAB编程

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼求大神帮忙看看这个程序&#xff0c;解释一下&#xff01;%形成节点导纳矩阵%考虑参考节点%考虑互感支路function [d_g,d_b,u_g,u_b]calyy(itoi,noels_hgln,noelsnum_hgln,bs_noels,bs_cp,gb_hgln,gb_noels,gb_cp,lv_bs,lv_hgln,lv…

mysql还原txt表的字段结构,mysql 修改表结构(转)

1.增加一个字段(一列)alter table table_name add column column_name type default value; type指该字段的类型,value指该字段的默认值例如:alter table mybook add column publish_house varchar(10) default ;2.更改一个字段名字(也可以改变类型和默认值)alter table tabl…

python操作json字符串,超详细的Python文件操作知识

来自&#xff1a;CSDN&#xff0c;作者&#xff1a;南枝向暖北枝寒MA链接&#xff1a;https://blog.csdn.net/mall_lucy/article/details/104547365【导语】&#xff1a;python进行文件操作&#xff0c;在日常编程中是很常用的。为了方便大家&#xff0c;这里对各种文件操作的知…

php头尾分离,laravel怎么做模板的头尾分离

关注博主&#xff0c;每天分享项目实战经验1.首先找到页面的公共部分&#xff0c;放在layouts这个目录下的home.blade.php2.设置内容区域yield(content)3.在其他页面使用模板引擎&#xff0c;先继承&#xff0c;然后在使用section即可extends(layouts.home)section(content)I a…

oracle11g备份出错,Oracle 11g备份导入12c错误

Oracle 11g备份导入12c错误Oracle11g&#xff1a;用户名&#xff1a;FJCPP 表空间&#xff1a;FYSOFT_DATA01 临时表空间&#xff1a;FYSOFT_DATA01导入&#xff1a;expdp FJCPP/FJCPP DIRECTORYdump_dir DUMPFILEFJCPP_20190717_1517_137.dmp logfileFJCPP_20190717_1517_137.…

matlab数字图像处理课程设计报告,数字图像处理课程设计实验报告.doc

数字图像处理课程设计实验报告数字图像处理课程设计题 目&#xff1a;数字图像处理及Huufman(或小波变换)编码仿真实现学生姓名&#xff1a;学 院&#xff1a;信息工程学院系 别&#xff1a;电子信息工程系专 业&#xff1a;电子信息工程班 级&#xff1a;电子指导教师&#xf…

oracle大于条件,oracle中sql语句中的in的条件数量大于1000有问题

oracle中sql语句中的in的条件数量大于1000有问题oracle中sql语句中select * from t_Test t where t.Id in(1,2,3......)/*数量不能大于1000个*/解决方法 分割成多次in 然后再或上 如 select * from t_Test t where t.Id in(1,2,3......800) or t.Id in(801,802,803......13…

oracle ora-16003,ORA-31600错误分析

作者:guoge[more]今天在对9i数据库做export时&#xff0c;出现如下错误&#xff1a;E:>exp system/manager filebackbill.dmp ownerbackbillExport: Release 9.2.0.4.0 - Production on Thu Nov 18 14:42:11 2004Copyright (c) 1982, 2002, Oracle Corporation. All rights…

探寻FPGA技术的广泛应用与未来前景

目录 1. FPGA的基础 2. FPGA的工作原理 3. FPGA的优势 3.1 灵活性 3.2 快速开发周期 3.3 高性能 4. FPGA的应用领域 4.1 通信系统 4.2 图像处理 4.3 嵌入式系统 4.4 科学研究 5. FPGA的未来展望 1. FPGA的基础 FPGA&#xff0c;即现场可编程门阵列&#xff08;Fiel…

oracle元数据到ods,将元数据存储到Jackrabbit存储库中

小编典典对于JCR 2.0&#xff0c;上传文件基本上与对于JCR 1.0而言是相同的。但是&#xff0c;JCR 2.0添加了一些有用的附加内置属性定义。“ nt&#xff1a;file”节点类型旨在表示文件&#xff0c;并且在JCR 2.0中具有两个内置属性定义(这两个属性定义都是在创建节点时由存储…

linux 负载命令,通过Linux命令查看系统平均负载的方法

1、Linux系统的平均负载的概念有时候我们会觉得系统响应很慢&#xff0c;但是又找不到原因&#xff0c;这时就要查看平均负载了&#xff0c;看它是否有大量的进程在排队等待。特定时间间隔内运行队列中的平均进程数可以反映系统的繁忙程度&#xff0c;所以我们通常会在自己的网…