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 相关文章推荐
为查询结果建立向后/向前按钮
Oct 09 PHP
发款php蜘蛛统计插件只要有mysql就可用
Oct 12 PHP
淘宝ip地址查询类分享(利用淘宝ip库)
Jan 07 PHP
Yii2前后台分离及migrate使用(七)
May 04 PHP
PHP array_key_exists检查键名或索引是否存在于数组中的实现方法
Jun 13 PHP
php如何执行非缓冲查询API
Jul 22 PHP
PHP两种实现无级递归分类的方法
Mar 02 PHP
PHP实现腾讯与百度坐标转换
Aug 05 PHP
Yii2.0建立公共方法简单示例
Jan 29 PHP
php+ajax 文件上传代码实例
Mar 18 PHP
简单实用的PHP文本缓存类实例
Mar 22 PHP
laravel框架实现敏感词汇过滤功能示例
Feb 15 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 和 MySQL 基础教程(三)
2006/10/09 PHP
php foreach正序倒序输出示例代码
2014/07/01 PHP
php获取网页里所有图片并存入数组的方法
2015/04/06 PHP
php+jQuery+Ajax实现点赞效果的方法(附源码下载)
2020/07/21 PHP
利用PHP实现开心消消乐的算法示例
2017/10/12 PHP
PHP实现动态创建XML文档的方法
2018/03/30 PHP
基于php解决json_encode中文UNICODE转码问题
2020/11/10 PHP
JavaScript 创建对象和构造类实现代码
2009/07/30 Javascript
一个很简单的jquery+xml+ajax的无刷新树结构(无css,后台是c#)
2010/06/02 Javascript
js 未结束的字符串常量错误解决方法
2010/06/13 Javascript
Javascript 自适应高度的Tab选项卡
2011/04/05 Javascript
基于datagrid框架的查询
2013/04/08 Javascript
jquery如何实现锚点链接之间的平滑滚动
2013/12/02 Javascript
js的参数有长度限制吗?发现不能超过2083个字符
2014/04/20 Javascript
jquery实现在光标位置插入内容的方法
2015/02/05 Javascript
jquery判断复选框是否被选中的方法
2015/10/16 Javascript
Vue.js基础学习之class与样式绑定
2017/03/20 Javascript
JS身份证信息验证正则表达式
2017/06/12 Javascript
node打造微信个人号机器人的方法示例
2018/04/26 Javascript
微信小程序wepy框架笔记小结
2018/08/08 Javascript
详解Vue中watch对象内属性的方法
2019/02/01 Javascript
jQuery轮播图功能制作方法详解
2019/12/03 jQuery
JavaScript中的this妙用实例分析
2020/05/09 Javascript
python解析中国天气网的天气数据
2014/03/21 Python
Python 判断 有向图 是否有环的实例讲解
2018/02/01 Python
详解Python利用random生成一个列表内的随机数
2019/08/21 Python
周仰杰(JIMMY CHOO)英国官方网站:闻名世界的鞋子品牌
2018/10/28 全球购物
Lululemon英国官网:加拿大瑜伽服装品牌
2019/01/14 全球购物
屈臣氏马来西亚官网:Watsons马来西亚
2019/06/15 全球购物
荷兰音乐会和音乐剧门票订购网站:Topticketshop
2019/08/27 全球购物
当x.equals(y)等于true时,x.hashCode()与y.hashCode()可以不相等,这句话对不对
2015/05/02 面试题
竞聘医务工作人员的自我评价分享
2013/11/04 职场文书
医学院学生的自我评价分享
2013/11/19 职场文书
会计应聘求职信范文
2013/12/17 职场文书
经典婚礼主持开场白
2014/03/13 职场文书
「女孩的钓鱼慢活」全新版权绘公布
2022/03/21 日漫