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 print EOF实现方法
May 21 PHP
php入门学习知识点一 PHP与MYSql连接与查询
Jul 14 PHP
php获取文件大小的方法
Feb 26 PHP
php两种无限分类方法实例
Apr 21 PHP
PHP借助phpmailer发送邮件
May 11 PHP
php防止网站被攻击的应急代码
Oct 21 PHP
Zend Framework教程之路由功能Zend_Controller_Router详解
Mar 07 PHP
PHP中串行化用法示例
Nov 16 PHP
php curl上传、下载、https登陆实现代码
Jul 23 PHP
SCP远程VPS快速搬家和WDCP升级php5.3安装memcached和eaccelerator教程
Jul 27 PHP
php基于环形链表解决约瑟夫环问题示例
Nov 07 PHP
PHP序列化的四种实现方法与横向对比
Nov 29 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
PHP错误Parse error: syntax error, unexpected end of file in test.php on line 12解决方法
2014/06/23 PHP
微信access_token的获取开发示例
2015/04/16 PHP
PHP数组生成XML格式数据的封装类实例
2016/11/10 PHP
php生成随机数/生成随机字符串的方法小结【5种方法】
2020/05/27 PHP
jQuery 解析xml文件
2009/08/09 Javascript
基于jquery的代码显示区域自动拉长效果
2011/12/07 Javascript
JS代码判断IE6,IE7,IE8,IE9的函数代码
2013/08/02 Javascript
JS获取DropDownList的value值与text值的示例代码
2014/01/07 Javascript
javascript 拷贝节点cloneNode()使用介绍
2014/04/03 Javascript
js使用post 方式打开新窗口
2015/02/26 Javascript
原生JS版和jquery版实现checkbox的全选/全不选/点选/行内点选(Mr.Think)
2016/10/29 Javascript
vue 项目常用加载器及配置详解
2018/01/22 Javascript
取消Bootstrap的dropdown-menu点击默认关闭事件方法
2018/08/10 Javascript
webpack css加载和图片加载的方法示例
2018/09/11 Javascript
vue权限管理系统的实现代码
2019/01/17 Javascript
javascript for循环性能测试示例
2019/08/07 Javascript
微信小程序 冒泡事件原理解析
2019/09/27 Javascript
js判断一个对象是数组(函数)的方法实例
2019/12/19 Javascript
微信小程序实现拼图小游戏
2020/10/22 Javascript
pymongo实现控制mongodb中数字字段做加法的方法
2015/03/26 Python
通过Python 获取Android设备信息的轻量级框架
2017/12/18 Python
Python爬取成语接龙类网站
2018/10/19 Python
python实现二维数组的对角线遍历
2019/03/02 Python
python中selenium操作下拉滚动条的几种方法汇总
2019/07/14 Python
python+jinja2实现接口数据批量生成工具
2019/08/28 Python
Python插入Elasticsearch操作方法解析
2020/01/19 Python
python 解决tqdm模块不能单行显示的问题
2020/02/19 Python
html5实现多文件的上传示例代码
2014/02/13 HTML / CSS
物理系毕业生自荐信
2013/11/01 职场文书
2014信息技术专业毕业生自我评价
2014/01/17 职场文书
小学感恩教育活动总结
2014/07/07 职场文书
感谢信的格式
2015/01/21 职场文书
人事主管岗位职责
2015/02/04 职场文书
仙境之桥观后感
2015/06/16 职场文书
sql通过日期判断年龄函数的示例代码
2021/07/16 SQL Server
Windows server 2012搭建FTP服务器
2022/04/29 Servers