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 相关文章推荐
smarty section简介与用法分析
Oct 03 PHP
使用php判断浏览器的类型和语言的函数代码
Feb 28 PHP
jQuery中的RadioButton,input,CheckBox取值赋值实现代码
Feb 18 PHP
PHP常用正则表达式集锦
Aug 17 PHP
php筛选不存在的图片资源
Apr 28 PHP
php使用自定义函数实现汉字分割替换功能示例
Jan 30 PHP
php使用Jpgraph创建折线图效果示例
Feb 15 PHP
php实现微信企业号支付个人的方法详解
Jul 26 PHP
PHP给源代码加密的几种方法汇总(推荐)
Feb 06 PHP
php 中phar包的使用教程详解
Oct 26 PHP
CI框架实现创建自定义类库的方法
Dec 25 PHP
关于Curl在Swoole协程中的解决方案详析
Sep 12 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
推荐一篇入门级的Class文章
2007/03/19 PHP
在任意字符集下正常显示网页的方法二(续)
2007/04/01 PHP
修改apache配置文件去除thinkphp url中的index.php
2014/01/17 PHP
PHP实现根据设备类型自动跳转相应页面的方法
2014/07/24 PHP
smarty循环嵌套用法示例分析
2016/07/19 PHP
php阳历转农历优化版
2016/08/08 PHP
基于jquery的direction图片渐变动画效果
2010/05/24 Javascript
JS匀速运动演示示例代码
2013/11/26 Javascript
Jquery创建一个层当鼠标移动到层上面不消失效果
2013/12/12 Javascript
js对象基础实例分析
2015/01/13 Javascript
js实现分享到随页面滚动而滑动效果的方法
2015/04/10 Javascript
JavaScript入门系列之知识点总结
2016/03/24 Javascript
jQuery 操作input中radio的技巧
2016/07/18 Javascript
jQuery搜索框效果实现代码(百度关键词联想)
2021/02/25 Javascript
JavaScrpt判断一个数是否是质数的实例代码
2017/06/11 Javascript
vue 怎么创建组件及组件使用方法
2017/07/27 Javascript
vue按需加载组件webpack require.ensure的方法
2017/12/13 Javascript
vue实现点击选中,其他的不选中方法
2018/09/05 Javascript
ng-zorro-antd 入门初体验
2018/12/03 Javascript
Vue实现的父组件向子组件传值功能示例
2019/01/19 Javascript
如何通过shell脚本自动生成vue文件详解
2019/09/10 Javascript
原生JS实现pc端轮播图效果
2020/12/21 Javascript
Python编程对列表中字典元素进行排序的方法详解
2017/05/26 Python
tf.truncated_normal与tf.random_normal的详细用法
2018/03/05 Python
python DataFrame 取差集实例
2019/01/30 Python
Python爬虫实现爬取百度百科词条功能实例
2019/04/05 Python
python threading和multiprocessing模块基本用法实例分析
2019/07/25 Python
pycharm中import呈现灰色原因的解决方法
2020/03/04 Python
通过Canvas及File API缩放并上传图片完整示例
2013/08/08 HTML / CSS
MyHeritage美国:家族史研究和DNA测试的领先服务
2019/05/27 全球购物
商务英语专业自荐信
2013/10/14 职场文书
国际贸易专业个人鉴定
2014/02/22 职场文书
医学专业毕业生推荐信
2014/07/12 职场文书
医药公司采购员岗位职责
2014/09/12 职场文书
男生贾里读书笔记
2015/06/30 职场文书
改进工作作风心得体会
2016/01/23 职场文书