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与ASP
Oct 09 PHP
PHP4 与 MySQL 数据库操作函数详解
Dec 06 PHP
PHP URL路由类实例
Nov 12 PHP
php表单请求获得数据求和示例
May 15 PHP
PHP+MySQL插入操作实例
Jan 21 PHP
值得分享的php+ajax实时聊天室
Jul 20 PHP
PHP中的密码加密的解决方案总结
Oct 26 PHP
PHP中的日期时间处理利器实例(Carbon)
Jun 09 PHP
PHP使用PDO抽象层获取查询结果的方法示例
May 10 PHP
php微信开发之音乐回复功能
Jun 14 PHP
PHP结合Ffmpeg快速搭建流媒体服务的实践记录
Oct 31 PHP
php 使用expat方式解析xml文件操作示例
Nov 26 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
通过文字传递创建的图形按钮
2006/10/09 PHP
PHP 存取 MySQL 数据库的一个例子
2006/10/09 PHP
smarty+adodb+部分自定义类的php开发模式
2006/12/31 PHP
CodeIgniter开发实现支付宝接口调用的方法示例
2016/11/14 PHP
php 遍历目录,生成目录下每个文件的md5值并写入到结果文件中
2016/12/12 PHP
Javascript开发之三数组对象实例介绍
2012/11/12 Javascript
用JavaScript计算在UTF-8下存储字符串占用字节数
2013/08/08 Javascript
JavaScript生成随机数的4种自定义函数分享
2015/02/28 Javascript
JavaScript常用函数工具集:lao-utils
2016/03/01 Javascript
node.js使用cluster实现多进程
2016/03/17 Javascript
如何清除IE10+ input X 文本框的叉叉和密码输入框的眼睛图标
2016/12/21 Javascript
VueJs路由跳转——vue-router的使用详解
2017/01/10 Javascript
jQuery 开发之EasyUI 添加数据的实例
2017/09/26 jQuery
基于zepto.js实现登录界面
2017/10/09 Javascript
JavaScript中错误正确处理方式小结你用对了吗
2017/10/10 Javascript
dropload.js插件下拉刷新和上拉加载使用详解
2017/10/20 Javascript
jquery radio 动态控制选中失效问题的解决方法
2018/02/28 jQuery
简单实现vue中的依赖收集与响应的方法
2019/02/18 Javascript
vue-cli history模式实现tomcat部署报404的解决方式
2019/09/06 Javascript
vue自定义switch开关组件,实现样式可自行更改
2019/11/01 Javascript
解决Vue在Tomcat8下部署页面不加载的问题
2019/11/12 Javascript
小程序实现背景音乐播放和暂停
2020/06/19 Javascript
vue v-for 点击当前行,获取当前行数据及event当前事件对象的操作
2020/09/10 Javascript
npm全局环境变量配置详解
2020/12/15 Javascript
Python实现一个简单的MySQL类
2015/01/07 Python
CentOS 6.5下安装Python 3.5.2(与Python2并存)
2017/06/05 Python
python使用os.listdir和os.walk获得文件的路径的方法
2017/12/16 Python
Python 多线程共享变量的实现示例
2020/04/17 Python
在Ubuntu 20.04中安装Pycharm 2020.1的图文教程
2020/04/30 Python
Python Socket TCP双端聊天功能实现过程详解
2020/06/15 Python
使用Python实现NBA球员数据查询小程序功能
2020/11/09 Python
Python tkinter之ComboBox(下拉框)的使用简介
2021/02/05 Python
如何减少垃圾回收让内存更加有效使用
2013/10/18 面试题
原告代理词范文
2015/05/25 职场文书
七一慰问简报
2015/07/20 职场文书
Python初学者必备的文件读写指南
2021/06/23 Python