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高手?学会“懒惰”的编程
Dec 05 PHP
php zlib压缩和解压缩swf文件的代码
Dec 30 PHP
php设计模式 Factory(工厂模式)
Jun 26 PHP
MySQL连接数超过限制的解决方法
Jul 17 PHP
PHP+MYSQL会员系统的登陆即权限判断实现代码
Sep 23 PHP
深入分析使用mysql_fetch_object()以对象的形式返回查询结果
Jun 05 PHP
php返回json数据函数实例
Oct 09 PHP
PHP中实现Bloom Filter算法
Mar 30 PHP
php导出生成word的方法
Dec 25 PHP
php mailer类调用远程SMTP服务器发送邮件实现方法
Mar 04 PHP
PHP中spl_autoload_register()函数用法实例详解
Jul 18 PHP
PHP实现将多个文件压缩成zip格式并下载到本地的方法示例
May 23 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
2006/12/14 PHP
WordPress主题制作中自定义头部的相关PHP函数解析
2016/01/08 PHP
PHP策略模式定义与用法示例
2017/07/27 PHP
PHP基于堆栈实现的高级计算器功能示例
2017/09/15 PHP
IE6浏览器下resize事件被执行了多次解决方法
2012/12/11 Javascript
基于JavaScript实现继承机制之原型链(prototype chaining)的详解
2013/05/07 Javascript
jQuery实现文本框输入同步的方法
2015/06/20 Javascript
AngularJS基础 ng-disabled 指令详解及简单示例
2016/08/01 Javascript
Jquery组件easyUi实现表单验证示例
2016/08/23 Javascript
微信小程序 加载 app-service.js 错误解决方法
2016/10/12 Javascript
js date 格式化
2017/02/15 Javascript
gulp解决跨域的配置文件问题
2017/06/08 Javascript
详解react-native-fs插件的使用以及遇到的坑
2017/09/12 Javascript
vue-resource拦截器设置头信息的实例
2017/10/27 Javascript
基于vue组件实现猜数字游戏
2020/05/28 Javascript
jQuery 点击获取验证码按钮及倒计时功能
2018/09/20 jQuery
node之本地服务器图片上传的方法示例
2019/03/26 Javascript
vue实现后台管理权限系统及顶栏三级菜单显示功能
2019/06/19 Javascript
微信小程序实现上拉加载功能
2019/11/20 Javascript
Vue实现多标签选择器
2019/11/28 Javascript
javascript实现贪吃蛇经典游戏
2020/04/10 Javascript
JavaScript enum枚举类型定义及使用方法
2020/05/15 Javascript
在vue中实现禁止回退上一步,路由不存历史记录
2020/07/22 Javascript
[01:04]DOTA2上海特锦赛现场采访 FreeAgain遭众解说围攻
2016/03/25 DOTA
使用Python的Supervisor进行进程监控以及自动启动
2014/05/29 Python
Python迷宫生成和迷宫破解算法实例
2019/12/24 Python
使用Python实现NBA球员数据查询小程序功能
2020/11/09 Python
运行python提示no module named sklearn的解决方法
2020/11/29 Python
CSS3中引入多种自定义字体font-face
2020/06/12 HTML / CSS
世界上最大的高分辨率在线图片库:Alamy
2018/07/07 全球购物
Linux内核的同步机制是什么?主要有哪几种内核锁
2013/01/03 面试题
毕业生求职的求职信
2013/12/05 职场文书
机电职业生涯规划书范文
2014/03/08 职场文书
全国劳模先进事迹材料(2016精选版)
2016/02/25 职场文书
Python超详细分步解析随机漫步
2022/03/17 Python
人物搭配车车超萌联名预备中 【咒术迴战】 ⨯ 【天竺鼠车车】 展开合作
2022/04/11 日漫