PHP简单选择排序算法实例

yipeiwu_com7年前PHP代码库

简单的选择排序算法:通过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中通用的excel导出方法实例

php中通用的excel导出方法实例

一.普遍导出方法 excel导出的方法网上有很多,在crm或是oa系统中导出excel是常有的事,做过的此功能人都知道,其主要操作其实是循环数据列表,然后一格一格地添加数据到固定的单元...

PHP快速排序算法实例分析

本文实例讲述了PHP快速排序算法。分享给大家供大家参考,具体如下: 快速排序:在无序的数组$data中,选择任意一个值作为对比值,定义i为头部检索索引,j为尾部检索索引, 算法步骤: (...

php模式设计之观察者模式应用实例分析

本文实例讲述了php模式设计之观察者模式。分享给大家供大家参考,具体如下: 这是我写的《php模式设计》的第五篇。前面的四篇在不断学习不断加深认识,到了今天再看观察者模式,觉得非常容易理...

php连接odbc数据源并保存与查询数据的方法

本文实例讲述了php连接odbc数据源并保存与查询数据的方法。分享给大家供大家参考。 具体实现代码如下: 复制代码 代码如下: $connstr = "driver=microsoft...

php下的权限算法的实现

权限设计 大概有这几种模式: 用户+组+角色+权限 用户+组+权限 用户+角色+权限 用户+权限 最近看了别人的设计方法,大多以“整数”来表示权限值,如添加、浏览、删除和修改,分别用1...