PHP简单选择排序算法实例


Posted in PHP onJanuary 26, 2015

简单的选择排序算法:通过n-i次关键字间的比较,从n-i+1个记录中选出关键字最小的记录,并和第i(1<=i<=n)个记录交换

<?php

    class Sort{ 

        /**

         * 简单的选择排序

         * 

         * @param unknown_type $arr

         */

        public function selectSort(&$arr) { 

            $len=count($arr);

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

                $min=$i;

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

                    if ($arr[$min]>$arr[$j]) {//如果找到比$arr[$min]较小的值,则将该下标赋给$min

                        $min=$j;

                    }

                }

                if ($min!=$i){//若$min不等于$i,说明找到了最小值,则交换

                    $this->swap($arr[$i],$arr[$min]);

                }

            }

        }

        /**

         * 将$a和$b两个值进行位置交换

         */

        public function swap(&$a,&$b) {

            $temp=$a;

            $a=$b;

            $b=$temp;

        }

    }

    $arr=array(4,6,1,2,9,8,7,3,5);

    $test=new Sort(); 

    $test->selectSort($arr);//简单的选择排序

//    var_dump($arr);

?>

简单选择排序的特点:交换移动数据次数相当少,从而节约了相应的时间
简单选择排序的时间复杂度分析:
无论最好最差的情况,其比较次数都是一样多,第i趟排序需要进行n-i次关键字的比较,此时需要比较n(n-1)/2次。所以最终的时间复杂度是O(n^2)
尽管与冒泡排序同为O(n^2),但选择排序的性能还是略优于冒泡排序的。

PHP 相关文章推荐
php preg_match_all结合str_replace替换内容中所有img
Oct 11 PHP
如何用phpmyadmin设置mysql数据库用户的权限
Jan 09 PHP
PHP压缩html网页代码(清除空格,换行符,制表符,注释标记)
Apr 02 PHP
PHP setTime 设置当前时间的代码
Aug 27 PHP
php使用smtp发送支持附件的邮件示例
Apr 13 PHP
PHP使用json_encode函数时不转义中文的解决方法
Nov 12 PHP
检测codeigniter脚本消耗内存情况的方法
Mar 21 PHP
PHP中如何判断exec函数执行成功?
Aug 04 PHP
php 中奖概率算法实现代码
Jan 25 PHP
PHP抽象类与接口的区别详解
Mar 21 PHP
PHP实现微信公众号验证Token的示例代码
Dec 16 PHP
php7 错误处理机制修改实例分析
May 25 PHP
朋友网关于QQ相关的PHP代码(研究QQ的绝佳资料)
Jan 26 #PHP
php使用cookie显示用户上次访问网站日期的方法
Jan 26 #PHP
php批量删除cookie的简单实现方法
Jan 26 #PHP
php创建、获取cookie及基础要点分析
Jan 26 #PHP
php表单提交与$_POST实例分析
Jan 26 #PHP
Symfony数据校验方法实例分析
Jan 26 #PHP
symfony表单与页面实现技巧
Jan 26 #PHP
You might like
为什么夜间收到的中波电台比白天多
2021/03/01 无线电
yii2.0数据库迁移教程【多个数据库同时同步数据】
2016/10/08 PHP
php源码的使用方法讲解
2019/09/26 PHP
js 操作符实例代码
2009/10/24 Javascript
自己动手制作jquery插件之自动添加删除行功能介绍
2011/10/14 Javascript
javascript 基础篇1 什么是js 建立第一个js程序
2012/03/14 Javascript
去掉gridPanel表头全选框的小例子
2013/07/18 Javascript
JSP跨iframe如何传递参数实现代码
2013/09/21 Javascript
javascript 获取网页标题代码实例
2014/01/22 Javascript
javaScript中slice函数用法实例分析
2015/06/08 Javascript
JavaScript代码生成PDF文件的方法
2016/02/26 Javascript
Node.js的Koa框架上手及MySQL操作指南
2016/06/13 Javascript
js鼠标单击和双击事件冲突问题的快速解决方法
2016/07/11 Javascript
JavaScript实现的CRC32函数示例
2016/11/23 Javascript
JS限定手机版中图片大小随分辨率自动调整的方法
2016/12/05 Javascript
学习使用bootstrap的modal和carousel
2016/12/09 Javascript
JavaScript如何获取到导航条中HTTP信息
2017/10/10 Javascript
详解小程序rich-text对富文本支持方案
2018/11/28 Javascript
Vue-cli3.x + axios 跨域方案踩坑指北
2019/07/04 Javascript
js中关于Blob对象的介绍与使用
2019/11/29 Javascript
node.js 基于 STMP 协议和 EWS 协议发送邮件
2021/02/14 Javascript
[16:56]heroes英雄教学 司夜刺客
2014/09/18 DOTA
[06:57]DOTA2-DPC中国联赛 正赛 Ehome vs PSG.LGD 选手采访
2021/03/11 DOTA
Python实现查看系统启动项功能示例
2018/05/10 Python
Python批量修改图片分辨率的实例代码
2019/07/04 Python
python自定义函数def的应用详解
2020/06/03 Python
Python socket服务常用操作代码实例
2020/06/22 Python
Django配置跨域并开发测试接口
2020/11/04 Python
美国网上鞋城:Shoeline.com
2016/11/17 全球购物
信息技术专业大学生个人的自我评价
2013/10/05 职场文书
《大海那边》教学反思
2014/04/09 职场文书
社区优秀志愿者先进事迹
2014/05/09 职场文书
2016入党积极分子党课学习心得体会
2015/10/09 职场文书
jackson json序列化实现首字母大写,第二个字母需小写
2021/06/29 Java/Android
使用goaccess分析nginx日志的详细方法
2021/07/09 Servers
Python socket如何解析HTTP请求内容
2022/02/12 Python