php 版本排序,四种常见排序算法--PHP版本

1、冒泡排序法

/**

* 冒泡排序

* des 对一组数据,比较相邻数据的大小,将值小数据在前面,值大的数据放在后面。

*/

$array = [2,5,1,3,7,4];

$result = bubble_sort($array);

print_r($result);

function bubble_sort($array){

$len = count($array);

for ($i=0; $i < $len; $i++) {

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

if($array[$j]>$array[$j+1]){

$tmp = $array[$j];

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

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

}

}

}

return $array;

}

2、选择排序法

/**

* 选择排序

* des 在一列数字中,选出最小数与第一个位置的数交换。然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止。

*/

$array = [2,5,1,3,7,4];

$result = select_sort($array);

print_r($result);

function select_sort($array){

$len = count($array);

$tmp = 0;

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

$minIndex = $i;

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

if($array[$j]

$minIndex = $j;

}

}

if($i != $minIndex){

$tmp = $array[$i];

$array[$i] = $array[$minIndex];

$array[$minIndex] = $tmp;

}

}

return $array;

}

3、快速排序法

$array = [2,5,1,3,7,4];

$result = quick_sort($array);

print_r($result);

function quick_sort($array){

$len = count($array);

if($len <= 1){

return $array;

}

$base = $array[0];

$left_array = $right_array = array();

for ($i=1; $i < $len; $i++) {

if($array[$i]

$left_array[] = $array[$i];

}else{

$right_array[] = $array[$i];

}

}

$left_array = quick_sort($left_array);

$right_array = quick_sort($right_array);

return array_merge($left_array,array($base),$right_array);

}

4、插入排序法

/**

* 插入排序法

* des 在要排序的一组数中,假设前面的数已经是排好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数也是排好顺序的。如此反复循环,直到全部排好顺序。

*/

$array = [2,5,1,3,7,4];

$result = insert_sort($array);

print_r($result);

function insert_sort($array){

$len = count($array);

for ($i=1; $i < $len; $i++) {

$tmp = $array[$i];

for ($j=$i-1; $j >= 0; $j--) {

if($tmp

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

$array[$j] = $tmp;

}else{

break;

}

}

}

return $array;

}

附上常见算法时间复杂度、空间复杂度对比

排序法

最差时间分析

平均时间复杂度

稳定度

空间复杂度

冒泡排序

O(n2)

O(n2)

稳定

O(1)

快速排序

O(n2)

O(n*logn)

不稳定

O(logn)~O(n)

选择排序

O(n2)

O(n2)

稳定

O(1)

二叉树排序

O(n2)

O(n*log2n)

不一顶

O(n)

插入排序

O(n2)

O(n2)

稳定

O(1)

堆排序

O(n*log2n)

O(n*log2n)

不稳定

O(1)

希尔排序

O

O

不稳定

O(1)

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

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

相关文章

C#内建接口:IEnumerable

这节讲一下接口IEnumerable。01什么是Enumerable在一些返回集合数据的接口中&#xff0c;我们经常能看到IEnumerable接口的身影。那什么是Enumerable呢&#xff1f;首先它跟C#中的enum关键字所表达的意思是不同的&#xff0c; 从翻译上来看&#xff1a;可枚举的&#xff0c;展开…

ubuntu,kali linux和windows三系统流水账——写给自己

我先说一下ubuntu和windows双系统安装的几种方法&#xff0c;最后总结kali linux的安装&#xff0c;想起什么写什么&#xff0c;所以有点乱。然后记录一下自己的使用过程中遇见的问题和解决的方法&#xff0c;还有我的个人建议。 我个人安装的是目前最新的ubuntu16.04LTS。wind…

一个富二代仅凭“1+1”就压制了全世界的数学家两个世纪......

全世界只有3.14 % 的人关注了爆炸吧知识在数学界&#xff0c;“11”是一个超级大难题&#xff0c;吸引了许多优秀的数学家去攻关打boss。但至今还未有人闯关成功。这位被众多数学家恨得牙痒痒的罪魁祸首就是——克里斯蒂安哥德巴赫。克里斯蒂安哥德巴赫1690年3月18日&#xff0…

用C语言实现数组反序

题目: 比如输入:数组是1,2,3,4,5 反序后的结果是:5,4,3,2,1 实现代码如下 #include <stdio.h> //用数组反序数组 void reserve1(int a[],int n){int m=(n+1)/2;int i=0;for(i;i<m;i++){int j=n-1-i;int temp=a[i];a[i]=a[j];a[j]=temp;} } //用指针进行反…

ordersta在php中是什么意思,[求助]ststa中的几个问题

<p> (1)hausman检验的结果如下——是什么意思呢</p><p>Test: Ho: difference in coefficients not systematic</p><p> chi2(4) (b-B)[(V_b-V_B)^(-1)](b-B)<br/> -16.36 chi2<0 &g…

java中错误的源文件,关于Java源文件结构规则,说法错误的是()A.版权信息必须在java文件的开头B.package语句在imports...

关于Java源文件结构规则&#xff0c;说法错误的是()A&#xff0e;版权信息必须在java文件的开头B&#xff0e;package语句在imports更多相关问题霍乱患者产生“米泔样”粪便由下列哪种致病因素直接引起普通话是以北京语音为标准音,所以北京话就是普通话。 (7.0分)在蜗杆传动中,…

switch类型模式

switch的模式中有一种叫类型模式&#xff0c;可以根据switch的类型来执行对应的case&#xff0c;这点在代码中用到的比较频繁&#xff0c;特别是在对应同类型对象的操作中。本例是把一组数据&#xff0c;转成一种格式&#xff0c;就是很简单的使用switch类型模式实现&#xff0…

Android框架之网络开发框架Volley

1. Volley简介 我们平时在开发Android应用的时候不可避免地都需要用到网络技术&#xff0c;而多数情况下应用程序都会使用HTTP协议来发送和接收网络数据。Android 系统中主要提供了两种方式来进行HTTP通信&#xff0c;HttpURLConnection和HttpClient&#xff0c;几乎在任何项目…

史上最会抄的数学家!把阿拉伯数字直接抄进自己的书里,连中国几千年前的名著都惨遭毒手.........

全世界只有3.14 % 的人关注了爆炸吧知识大家都喜欢《蒙娜丽莎的微笑》&#xff0c;但你知道她为什么好看吗&#xff1f;《蒙娜丽莎的微笑》没错&#xff0c;她符合黄金分割法0.618原则嘛&#xff01;但你知道这世界上还有一个数列版的黄金分割法的吗&#xff1f;这个数列就是斐…

求数组里面的最大值和最小值

题目&#xff1a; 求数组里面的最大值和最小值比如&#xff1a;数组 1&#xff0c;2&#xff0c;3&#xff0c;4&#xff0c;5最大值是5&#xff0c;最小值是1代码实现&#xff1a; #include <stdio.h> int max,min; void getMaxAndMin(int a[],int n){int *q;qa;maxmin*…

【ASP.NET开发】.NET三层架构简单解析

这篇文章本来应该很早就写出来的&#xff0c;但是一直苦于自己的精神能力有限&#xff0c;而且已经到了我们学校的考试周&#xff0c;所以时间上还是有点紧迫。关键的一点就是&#xff0c;找不到合理的思路来写&#xff0c;思路没有的话&#xff0c;就算是再好的素材&#xff0…

高级php平时的工作,【高级PHP开发工作内容|工作职责|高级PHP开发做什么】-看准网...

职位要求1.能非常熟练PHP开发和调试语言&#xff1b;并且在Python/Ruby/Perl语言上有更好经验&#xff1b;良好的编码风格习惯和测试习惯维持系统的质量&#xff1b;2.乐于维持和提高团队的专业水平&#xff0c;甚至正面影响其他开发队伍&#xff1b;3.乐于了解业务需求、协助团…

C和C++里面常见错误和异常出现怎么解决总结(不断更新)

1、cannot open Debug/first.exe for writing 如下图: 原因:控制台没有关闭,不能写,因为编译的exe文件正在运行,而再次编译是要修改这个exe文件的,因为不让写,所以就抱着这个错。 解决办法:是看有没有运行编译后文件,如果正运行着,就将其关掉。 2、cannot conver…

PHP PDO

PDO:数据访问抽象层方法一 <?php //造dsn&#xff0c;驱动名&#xff1a;dbname数据库名&#xff1b;host服务器地址 $dsn"mysql:dbnamemydb;hostlocalhost"; //造pdo对象 $pdonew PDO($dsn,"root","135395"); //写sql语句 $sql"select…

有关[Http持久连接]的一切,卷给你看

上文中我的结论是&#xff1a; HTTP Keep-Alive 是在应用层对TCP连接进行滑动续约复用&#xff0c; 如果客户端/服务器稳定续约&#xff0c;就成了名副其实的长连接。目前所有的Http网络库都默认开启了HTTP Keep-Alive&#xff0c;今天我们从底层TCP连接和排障角度撕碎HTTP持久…

他从小把数学书当小说看,凭借一本书将全世界狠狠甩在身后,被誉为中国的牛顿...

全世界只有3.14 % 的人关注了爆炸吧知识你知道吗&#xff1f;我国也有牛顿哦。他就是魏晋时期的数学家——刘徽&#xff0c;人称“中国数学史上的牛顿”。刘徽沉迷学习公元225年&#xff0c;刘徽出生在山东滨州邹平市的一所农家小院里。从小&#xff0c;刘徽就表现得与别的孩子…

简单调试 Bash 脚本

用 Bash 写的脚本也可以进行调试&#xff0c;和 Python&#xff0c;Perl 等解释型语言一样。新建一个名为 servinfo 的脚本并增加可执行权限&#xff1a; $ vi servinfo#!/bin/bashecho "Hostname: $(hostname)" echo "Date: $(date)" echo "Kernel: …

PHP优于Node.js的五大理由

PHP是一款服务器端的脚本语言&#xff0c;主要用于动态网页开发&#xff0c;是目前最流行的开发语言之一。Node是一款用来编写高性能网络服务器的JavaScript工具包。文中将两者进行对比&#xff0c;列举了PHP优于Node.js的五大理由。一起来看下。 PHP优于Node.js的理由 容易托管…

C和C++语言编程里面常用函数或者编程技巧总结(不断更新)

1、我们输入字符串输出字符串可以这样 char a[20];gets(a);puts(a);puts("hello word"); 2、输出字符串putchar()、printf("%p\n",p);cout<<p; #include<stdio.h> void main(){char a[20]={"chenyu1"};char *c="chenyu2"…

python 3.* + Eclipse mar.2 +pydev 5.0 环境搭建

为什么80%的码农都做不了架构师&#xff1f;>>> 这个是版本问题&#xff0c;官方已给出答案 如果要用pydev 5.0 JDK 必须 1.8&#xff0c;1.7是不行的。 PyDev does not appear after install! Well, the main issue at this time is that PyDev requires Java 8 i…