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 各种排序算法实现代码
Aug 20 PHP
php 网页播放器用来播放在线视频的代码(自动判断并选择视频文件类型)
Jun 03 PHP
Views rows style模板重写代码
May 16 PHP
有关PHP中MVC的开发经验分享
May 17 PHP
基于php缓存的详解
May 15 PHP
php生成图形验证码几种方法小结
Aug 15 PHP
php判断是否为json格式的方法
Mar 04 PHP
php操作redis中的hash和zset类型数据的方法和代码例子
Jul 05 PHP
支持png透明图片的php生成缩略图类分享
Feb 08 PHP
php简单实现sql防注入的方法
Apr 22 PHP
Zend Framework常用校验器详解
Dec 09 PHP
PhpStorm 2020.3:新增开箱即用的PHP 8属性(推荐)
Oct 30 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
骨王战斗力在公会成员中排不进前五,却当选了会长,原因竟是这样
2020/03/02 日漫
PHP+MySQL 制作简单的留言本
2009/11/02 PHP
解析zend studio中直接导入svn中的项目的方法步骤
2013/06/21 PHP
深入解析PHP 5.3.x 的strtotime() 时区设定 警告信息修复
2013/08/05 PHP
编写PHP脚本来实现WordPress中评论分页的功能
2015/12/10 PHP
thinkphp命名空间用法实例详解
2015/12/30 PHP
Laravel核心解读之异常处理的实践过程
2019/02/24 PHP
科讯商业版中用到的ajax空间与分页函数
2007/09/02 Javascript
麦鸡的TAB切换功能结合了javascript和css
2007/12/17 Javascript
纯文字版返回顶端的js代码
2013/08/01 Javascript
容易造成JavaScript内存泄露几个方面
2014/09/04 Javascript
jQuery实现的经典竖向伸缩菜单效果代码
2015/09/24 Javascript
Javascript中级语法快速入手
2016/07/30 Javascript
jQuery的 $.ajax防止重复提交的两种方法(推荐)
2016/10/14 Javascript
JS实现含有中文字符串的友好截取功能分析
2017/03/13 Javascript
Java与JavaScript中判断两字符串是否相等的区别
2017/03/13 Javascript
vue2.0 + element UI 中 el-table 数据导出Excel的方法
2018/03/02 Javascript
js 实现ajax发送步骤过程详解
2019/07/25 Javascript
JS实现灯泡开关特效
2020/03/30 Javascript
[00:36]DOTA2上海特级锦标赛 LGD战队宣传片
2016/03/04 DOTA
Python WXPY实现微信监控报警功能的代码
2017/10/20 Python
python写入已存在的excel数据实例
2018/05/03 Python
解决Python3.8用pip安装turtle-0.0.2出现错误问题
2020/02/11 Python
canvas烟花特效锦集
2018/01/17 HTML / CSS
Stubhub英国:购买体育、演唱会和剧院门票
2018/06/10 全球购物
Dockers鞋官网:Dockers Shoes
2018/11/13 全球购物
英国和爱尔兰最大的地毯零售商:Kukoon
2018/12/17 全球购物
Pottery Barn阿联酋:购买家具、家居装饰及更多
2019/12/08 全球购物
英国专业美容产品在线:Mylee(从指甲到脱毛)
2020/07/06 全球购物
股东出资证明书(正规版)
2014/09/24 职场文书
国家税务局领导班子对照检查材料思想汇报
2014/10/04 职场文书
2015-2016年小学教导工作总结
2015/07/21 职场文书
尊师重教主题班会
2015/08/14 职场文书
Pycharm连接远程服务器并远程调试的全过程
2021/06/24 Python
「玫瑰之王的葬礼」舞台剧主视觉图公开
2022/03/21 日漫
Win11 22H2 2022怎么更新? 获得Win1122H22022版本升级技巧
2022/09/23 数码科技