博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php实现排序(选择,冒泡,快速)
阅读量:6995 次
发布时间:2019-06-27

本文共 2171 字,大约阅读时间需要 7 分钟。

选择排序

选择排序主要是将假设数组中的第一个是最小的,循环与数组中的第一个进行比较 如果比其还小 则记录下标 进行数值交换 效率相对冒泡来说比较高

function selection_sort($array){    $count=count($array);    for($i=0;$i<$count-1;$i++){        /*findtheminest*/        $min=$i;        echo'$min-->'.$array[$min].'-->';        for($j=$i+1;$j<$count;$j++){            //由小到大排列            if($array[$min]>$array[$j]){                //表明当前最小的还比当前的元素大                $min=$j;                //赋值新的最小的            }        }        echo$array[$min].'coco
'; /*swap$array[$i]and$array[$min]即将当前内循环的最小元素放在$i位置上*/ if($min!=$i){ $temp=$array[$min]; $array[$min]=$array[$i]; $array[$i]=$temp; } } return$array;}

冒泡排序:

冒泡排序是将数组中的前后两个相领的数值进行比较 条件成立 则进行交换 效率比较低 因为其交换的次数也比较多

function bubbleSort($numbers) {$cnt = count($numbers);for ($i = 0; $i < $cnt; $i++) {    for ($j = 0; $j < $cnt - $i - 1; $j++) {        if ($numbers[$j] > $numbers[$j + 1]) {            $temp = $numbers[$j];            $numbers[$j] = $numbers[$j + 1];            $numbers[$j + 1] = $temp;        }    }}return $numbers;

}

插入排序:

插入排序是将插入的数据保存在变量中,与数组中的每个数比较 找到合适的位置 进行插入 效率相对来说比较高

function insertSort($arr){         for($i=0;$i
=0&&$insertVal<$arr[$insertIndex]) { $arr[$insertIndex+1]=$arr[$insertIndex]; $insertIndex--; } $arr[$insertIndex+1]=$insertVal; }}

快速插入:

快速排序由C. A. R.

Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。效率很高

function quick_sort($arr)    {        //判断参数是否是一个数组        if(!is_array($arr))            return false;        //递归出口:数组长度为1,直接返回数组        $length=count($arr);        if($length<=1) return $arr;        //数组元素有多个,则定义两个空数组        $left=$right=array();        //使用for循环进行遍历,把第一个元素当做比较的对象        for($i=1;$i<$length;$i++)        {            //判断当前元素的大小            if($arr[$i]<$arr[0]){                $left[]=$arr[$i];            }else{                $right[]=$arr[$i];            }        }        //递归调用        $left=quick_sort($left);        $right=quick_sort($right);        //将所有的结果合并        return array_merge($left,array($arr[0]),$right);        }

转载地址:http://jfdvl.baihongyu.com/

你可能感兴趣的文章
检查Linux系统日志error和mysql错误日志的脚本
查看>>
Android -- Service的开启关闭与生命周期
查看>>
结构化项目管理:十步法 [摘自:成功的软件项目管理]
查看>>
cuda并行编程之求解ConjugateGradient(共轭梯度迭代)丢失dll解决方式
查看>>
Microsoft Enterprise Library 5.0 系列教程(二) Cryptography Application Block (高级)
查看>>
Spreadsheet 对象
查看>>
NSubstitute完全手册(十八)检查调用顺序
查看>>
Ubuntu 下使用minicom 的配置过程
查看>>
HDU 5091 线段树扫描线
查看>>
git/github运用
查看>>
[转]通过debootstrap安装Debian
查看>>
javaweb学习总结(三十四)——使用JDBC处理MySQL大数据
查看>>
phpmyadmin导入数据库大小限制修改
查看>>
SQL Server-聚焦事务对本地变量、临时表、表变量影响以及日志文件存满时如何收缩(三十一)...
查看>>
SAP QM 启用了Inspection Point的检验批在UD界面里有什么不同?
查看>>
Oracle 12c升级检查问题分析
查看>>
Greenplum 自动统计信息收集 - 暨统计信息不准引入的broadcast motion一例
查看>>
超级有用的9个PHP代码片段
查看>>
关于结构体占用空间大小总结(#pragma pack的使用)
查看>>
云数据库Redis支持读写分离
查看>>