1.

<?php

/**
* 快速排序不费空间也节省时间
*/
$arr=array(5,1,8,2,6,4,9,3,7);
// $arr=array(1,2,3,4,5,6,7,8,9);
// $arr=array(9,8,7,6,5,4,3,2,1);
// $arr=array(1,5,9,7,6,4);
function fast($arr)
{
//统计数组长度
$length=count($arr);

//定义两个空数组
$left=array();
$right=array();

//如果数组长度<1,返回数组
if($length<=1){
return $arr;
}
for($i=1;$i<$length;$i++){
//找一个数作为比较,为了方便数组中的第一个数
if($arr[0]>$arr[$i]){
//小于这个数的放入这个数组,第一次后数组中1243
$left[]=$arr[$i];
}else{
//大于这个数的放入这个数组,第一次后数组中8697
$right[]=$arr[$i];
}

}
var_dump($left);
//递归调用实现排序
$left=fast($left);
//把第一次比较数放入两个数组中的一个
$left[]=$arr[0];
$right=fast($right);
return array_merge($left,$right);
}

var_dump(fast($arr));
?>

2.

<?php

/**
* 冒泡排序费时间
*/
//随便定义一个数组,即要比较的数
$arr=array(12,11,63,9,25);
$arr=array(1,2,3,4,5,6,7,8,9);
//$arr=array(999,888,777,6,5,4,3,2,1);
function maopao($arr)
{
//统计数组的长度
$length=count($arr);

//外层循环就是数组有多少个数我就要把这个数组遍历多少次,每一次里层循环排好序的数组
for($i=0;$i<$length;$i++)
{
//里层循环就是为了进行排序,$l-1是因为冒泡排序法只要比较$l-1次
for($j=0;$j<$length-1;$j++)
{
//如果相邻数不比它后面的数小就不用排序,如果小后面的数会出现在前面的位置
if($arr[$j]<$arr[$j+1]){
$t=$arr[$j];
$arr[$j]=$arr[$j+1];
$arr[$j+1]=$t;
}
}
}
return $arr;
}

var_dump(maopao($arr));
?>

3.

<?php
/**
* 桶排序费空间
*/

//定义一个数组,及要排序的数
$arr=array(3,5,5,2,8);

function tong($arr)
{
//定义一个一维数组,一定要比你所要比较的数大,数组里的数就相当于一个桶,定义在100以内
$tong=range(0,100);

//把数组里的数都 初始化为0
for($i=0;$i<=10;$i++){
$tong[$i]=0;
}

//重新给数组赋值
foreach($arr as $value){
//$arr中的数与$a中的索引对应,$arr中有一个$a的索引值就要自增, ++就是自增的意思
$tong[$value]++;
}

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

//$j=1是因为,$a中索引值>=1的是我们想要输出的
for($j=1;$j<=$tong[$i];$j++)
{
echo $i;
}
}

}

tong($arr);
?>

php三种排序算法的更多相关文章

  1. 排序—时间复杂度为O(n2)的三种排序算法

    1 如何评价.分析一个排序算法? 很多语言.数据库都已经封装了关于排序算法的实现代码.所以我们学习排序算法目的更多的不是为了去实现这些代码,而是灵活的应用这些算法和解决更为复杂的问题,所以更重要的是学 ...

  2. 三种排序算法python源码——冒泡排序、插入排序、选择排序

    最近在学习python,用python实现几个简单的排序算法,一方面巩固一下数据结构的知识,另一方面加深一下python的简单语法. 冒泡排序算法的思路是对任意两个相邻的数据进行比较,每次将最小和最大 ...

  3. JavaScript新手学习笔记3——三种排序方式(冒泡排序、插入排序、快速排序)

    每种编程语言学到数组的时候,都会讲到排序算法,当时学C语言的时候,卡在排序算法.今天来总结一下javascript中如何实现三种排序算法. 1.冒泡排序(默认升序排列哦) 原理: 冒泡排序的原理,顾名 ...

  4. 模板化的七种排序算法,适用于T* vector<T>以及list<T>

    最近在写一些数据结构以及算法相关的代码,比如常用排序算法以及具有启发能力的智能算法.为了能够让写下的代码下次还能够被复用,直接将代码编写成类模板成员函数的方式,之所以没有将这种方式改成更方便的函数模板 ...

  5. 几种排序算法的学习,利用Python和C实现

    之前学过的都忘了,也没好好做过总结,现在总结一下. 时间复杂度和空间复杂度的概念: 1.空间复杂度:是程序运行所以需要的额外消耗存储空间,一般的递归算法就要有o(n)的空间复杂度了,简单说就是递归集算 ...

  6. 秒杀9种排序算法(JavaScript版)

    一:你必须知道的 1> JS原型 2> 排序中的有序区和无序区 3> 二叉树的基本知识 如果你不知道上面三个东西,还是去复习一下吧,否则,看下面的东西有点吃力. 二:封装丑陋的原型方 ...

  7. 学习Java绝对要懂的,Java编程中最常用的几种排序算法!

    今天给大家分享一下Java中几种常见的排序算法的Java代码 推荐一下我的Java学习羊君前616,中959,最后444.把数字串联起来!     ,群里有免费的学习视频和项目给大家练手.大神有空时也 ...

  8. C#常用8种排序算法实现以及原理简介

    public static class SortExtention { #region 冒泡排序 /* * 已知一组无序数据a[1].a[2].--a[n],需将其按升序排列.首先比较a[1]与a[2 ...

  9. 用 C 语言描述几种排序算法

    排序算法是最基本且重要的一类算法,本文基于 VS2017,使用 C 语言来实现一些基本的排序算法. 一.选择排序 选择排序,先找到数组中最小的元素,然后将这个元素与数组的第一个元素位置互换(如果第一个 ...

随机推荐

  1. piggy back是什么意思?

    遇到这么一句话. // Connect the Socket.IO framework up to the web server to piggy back on its connection // ...

  2. mybatisplus

    1.selectById 根据主键查询一个对象,如果没有查到,则返回null: GxySchoolDto isExist = gxySchoolMapper.selectById(schoolEnti ...

  3. redis运维手册

    版本采用:redis-3.2.11.tar.gz 官网下载地址:https://redis.io/download 1.redis服务器资源 redis服务器基础配置CPU2核.内存按需分配,系统磁盘 ...

  4. php获取服务器ip方法

    public static function getServerIp() { if(!empty($_SERVER['SERVER_ADDR'])) { return $_SERVER['SERVER ...

  5. Windows安装多个版本JDK如何切换

    本人电脑同时安装了jdk1.7和1.8,以下时切换jdk版本的方式: 1.修改环境变量: 2.修改注册表: 打开HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft 分别修改Jav ...

  6. Mrchen测试人生

    auto:chenyq date:20190920 data:今天是我从事10年IT软件测试工作来的 开始写技术博客的第一次,希望今后能给互联网需要查询技术知识带来方便: 说起我的测试人生 路也走了1 ...

  7. HashMap、Hashtable 以及HashSet

    关于多线程的问题大多会涉及到Collection框架,涉及到Collection框架就不得不谈HashSet和HashMap.HashMap和HashSet都是collection框架的一部分,它们让 ...

  8. delphicbuilder10_2_1 安装破解注册

    安装程序 1.解压delphicbuilder10_2_1.iso,以管理员身份运行..\delphicbuilder10_2_1\Install\Setup.exe——选择安装语言——点击OK(推荐 ...

  9. Oracle的基本操作-序列的使用

    序列:默认从1开始,一次递增,主要用来给主键赋值使用 create sequence s_person; select s_person.nextval from dual; --dual是一张虚表, ...

  10. SQLServer启动和关闭bat脚本

    原文:SQLServer启动和关闭bat脚本   安装完毕SQL SERVER 2005后,会默认自动启动SQL Server等几个服务,这几个服务比较占用系统资源.当不运行SQL Server时,最 ...