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 相关文章推荐
使用XDebug调试及单元测试覆盖率分析
Jan 27 PHP
一些需要禁用的PHP危险函数(disable_functions)
Feb 23 PHP
域名和cookie问题(域名后缀)
Oct 10 PHP
解析MySql与Java的时间类型
Jun 22 PHP
php去除字符串换行符示例分享
Feb 13 PHP
php CI框架插入一条或多条sql记录示例
Jul 29 PHP
php如何连接sql server
Oct 16 PHP
WordPress中限制非管理员用户在文章后只能评论一次
Dec 31 PHP
浅谈PHP Cookie处理函数
Jun 10 PHP
Zend Framework基于Command命令行建立ZF项目的方法
Feb 18 PHP
PHP 获取客户端 IP 地址的方法实例代码
Nov 11 PHP
thinkPHP5框架路由常用知识点汇总
Sep 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中session变量的销毁
2014/02/27 PHP
PHP7如何开启Opcode打造强悍性能详解
2018/05/11 PHP
XML+XSL 与 HTML 两种方案的结合
2007/04/22 Javascript
清华大学出版的事半功倍系列 javascript全部源代码
2007/05/04 Javascript
JavaScript 无符号右移运算符
2009/04/17 Javascript
JavaScript中的prototype和constructor简明总结
2014/04/05 Javascript
JavaScript通过元素索引号删除数组中对应元素的方法
2015/03/18 Javascript
AngularJS学习笔记之基本指令(init、repeat)
2015/06/16 Javascript
图解js图片轮播效果
2015/12/20 Javascript
JavaScript电子时钟倒计时第二款
2016/01/10 Javascript
详解vue表单验证组件 v-verify-plugin
2017/04/19 Javascript
Vue 兄弟组件通信的方法(不使用Vuex)
2017/10/26 Javascript
详解react关于事件绑定this的四种方式
2018/03/09 Javascript
如何为你的JS项目添加智能提示与类型检查详解
2019/03/12 Javascript
解决layui数据表格Date日期格式的回显Object的问题
2019/09/19 Javascript
jquery中attr、prop、data区别与用法分析
2019/09/25 jQuery
jQuery实现B2B网站后台管理系统侧导航
2020/07/08 jQuery
jQuery开发仿QQ版音乐播放器
2020/07/10 jQuery
vue select 获取value和lable操作
2020/08/28 Javascript
[01:01:52]DOTA2-DPC中国联赛定级赛 SAG vs iG BO3第二场 1月9日
2021/03/11 DOTA
Python绑定方法与非绑定方法详解
2017/08/18 Python
实用自动化运维Python脚本分享
2018/06/04 Python
python3文件复制、延迟文件复制任务的实现方法
2019/09/02 Python
关于box-sizing的全面理解
2016/07/28 HTML / CSS
如何查询Oracle数据库中已经创建的索引
2013/10/11 面试题
三好学生自我鉴定
2013/12/17 职场文书
中学生爱国演讲稿
2013/12/31 职场文书
青年创业培训欢迎词
2014/01/10 职场文书
企业车辆管理制度
2014/01/24 职场文书
技能比武方案
2014/05/21 职场文书
英语系本科生求职信
2014/07/15 职场文书
英文感谢信格式
2015/01/21 职场文书
中秋节寄语2015
2015/03/24 职场文书
葬礼主持词
2015/07/02 职场文书
Python实现学生管理系统并生成exe可执行文件详解流程
2022/01/22 Python
安装harbor作为docker镜像仓库的问题
2022/06/14 Servers