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 相关文章推荐
1.PHP简介
Oct 09 PHP
php数据库密码的找回的步骤
Jan 12 PHP
PHP中文处理 中文字符串截取(mb_substr)和获取中文字符串字数
Nov 10 PHP
div li的多行多列 无刷新分页示例代码
Oct 16 PHP
PHP 5.5 创建和验证哈希最简单的方法详解
Nov 07 PHP
php获取bing每日壁纸示例分享
Feb 25 PHP
解析PHP强制转换类型及远程管理插件的安全隐患
Jun 30 PHP
Drupal简体中文语言包安装教程
Sep 27 PHP
php获取远程文件内容的函数
Nov 02 PHP
PHP获取二维数组中某一列的值集合
Dec 25 PHP
关于php 高并发解决的一点思路
Apr 16 PHP
php实现session共享的实例方法
Sep 19 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中spl_autoload详解
2014/10/17 PHP
function foo的原型与prototype属性解惑
2010/11/19 Javascript
JavaScript动态修改弹出窗口大小的方法
2015/04/06 Javascript
JQuery boxy插件在IE中边角图片不显示问题的解决
2015/05/20 Javascript
json对象转为字符串,当做参数传递时加密解密的实现方法
2016/06/29 Javascript
JavaScript——DOM操作——Window.document对象详解
2016/07/14 Javascript
javascript数字验证的实例代码(推荐)
2016/08/20 Javascript
jQuery给指定的table动态添加删除行的操作方法
2016/10/12 Javascript
bootstrap基础知识学习笔记
2016/11/02 Javascript
VUE JS 使用组件实现双向绑定的示例代码
2017/01/10 Javascript
BootStrap栅格系统、表单样式与按钮样式源码解析
2017/01/20 Javascript
AngularJS service之select下拉菜单效果
2017/07/28 Javascript
Vue组件开发之LeanCloud带图形校验码的短信发送功能
2017/11/07 Javascript
vue学习笔记之slot插槽基本用法实例分析
2020/02/01 Javascript
原生JavaScript实现弹幕组件的示例代码
2020/10/12 Javascript
跟老齐学Python之print详解
2014/09/28 Python
简述Python中的面向对象编程的概念
2015/04/27 Python
MySQL最常见的操作语句小结
2015/05/07 Python
Python用threading实现多线程详解
2017/02/03 Python
python中安装模块包版本冲突问题的解决
2017/05/02 Python
详解分布式任务队列Celery使用说明
2018/11/29 Python
Flask使用Pyecharts在单个页面展示多个图表的方法
2019/08/05 Python
python实现比对美团接口返回数据和本地mongo数据是否一致示例
2019/08/09 Python
Django为窗体加上防机器人的验证码功能过程解析
2019/08/14 Python
解决windows下python3使用multiprocessing.Pool出现的问题
2020/04/08 Python
django 连接数据库出现1045错误的解决方式
2020/05/14 Python
python创建文本文件的简单方法
2020/08/30 Python
35款精致的 CSS3 和 HTML5 网页模板 推荐
2012/08/03 HTML / CSS
Under Armour美国官网:美国知名高端功能性运动品牌
2016/09/05 全球购物
美津浓巴西官方网站:Mizuno巴西
2019/07/24 全球购物
跟单文员的岗位职责
2013/11/14 职场文书
前台接待岗位职责
2013/12/03 职场文书
公司2014年度工作总结
2014/12/10 职场文书
我们的节日端午节活动总结
2015/02/11 职场文书
2016年学校安全教育月活动总结
2016/04/06 职场文书
浅谈什么是SpringBoot异常处理自动配置的原理
2021/06/21 Java/Android