文档章节

PHP 算法01之选择排序

木川瓦兹
 木川瓦兹
发布于 2018/07/16 16:36
字数 545
阅读 2
收藏 0
PHP

描述

选择最小的元素由左到右依次交换顺序即完成元素由小到大的排序。选择排序重点在于选择最小元素。以下是较为详细的描述:

  1. 首先,把所有的数据循环一遍找到最小的数,然后和第一个数交换位置。
  2. 然后从第二个数起,一直循环到最后一个,找到最小的数和第二个交换。
  3. 如此一直找到最后一个。

选择排序每次循环都能排好一个元素,因此需要交换的次数等于元素个数。选择排序是最容易理解的排序方式,通俗的理解方式就是:在9个碗里放了9个苹果,逐个看一眼找出最小的苹果和第一个碗里的交换一下,然后不再看第一个碗,从第二个碗起,再玩一次,直到所有的碗都玩过。

代码

function selectionSort($needSortData)
{
    $sortDataLength = count($needSortData); //计算出待排序元素数量
    for ($i = 0; $i < $sortDataLength; $i++) //外层遍历每一个待排序元素
    {
        $min = $i; //外层遍历把当前元素设置为最小值
        for ($j = $i + 1; $j < $sortDataLength; $j++) 
        {//然后从下一个元素开始依次和正在遍历的元素比较,此层遍历记为内层遍历
            if ($needSortData[$j] < $needSortData[$min]) {
                //遍历到比此次最小值还小的元素,那么用$min记录以下当前位置
                //然后继续遍历,直到遍历到最后,也就是说$min会记录最小值的位置
                $min = $j; 
            }
        }
        //以下三行是把找到的最小值和正在外层遍历的当前元素交换
        $temp = $needSortData[$i];
        $needSortData[$i] = $needSortData[$min];
        $needSortData[$min] = $temp;
    }
    return $needSortData;
}

$unSortedData = [9, 1, 3, 8, 2, 6, 5, 7, 4];
$result=selectionSort($unSortedData);
print_r($result);

© 著作权归作者所有

共有 人打赏支持
木川瓦兹

木川瓦兹

粉丝 51
博文 6
码字总数 6648
作品 1
丰台
程序员
私信 提问
php四种基础算法:冒泡,选择,插入和快速排序法

许多人都说 算法是程序的核心,一个程序的好于差,关键是这个程序算法的优劣。作为一个初级phper,虽然很少接触到算法方面的东西 。但是对于冒泡排序,插入排序,选择排序,快速排序四种基本算...

PHP86
2013/12/21
0
0
php四种基础算法:冒泡,选择,插入和快速排序法

许多人都说 算法是程序的核心,一个程序的好于差,关键是这个程序算法的优劣。作为一个初级phper,虽然很少接触到算法方面的东西 。但是对于冒泡排序,插入排序,选择排序,快速排序四种基本算...

带刺的玫瑰
2014/01/06
0
0
js算法初窥01(排序算法01-冒泡、选择、插入)

  排序,我想大家一定经历过或者正在经历着。或许你不懂算法,对排序算法一无所知,但是你一定用过一些第三方库的api来一键排序,那么,在你享受便捷的同时,你是否想过它的底层是如何实现...

zaking
2018/05/15
0
0
PHP实现四种基本排序算法

许多人都说算法是程序的核心,算法的好坏决定了程序的质量。作为一个初级phper,虽然很少接触到算法方面的东西。但是对于基本的排序算法还是应该掌握的,它是程序开发的必备工具。这里介绍冒...

京牛教育科技
2016/08/30
18
0
PHP 四种基本排序算法的代码实现(2)

许多人都说算法是程序的核心,算法的好坏决定了程序的质量。作为一个初级phper,虽然很少接触到算法方面的东西。但是对于基本的排序算法还是应该掌握的,它是程序开发的必备工具。这里介绍冒...

iceman_os
2015/03/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Python+Appium自动化测试环境搭建

1.Android SDK 下载SDK并配置系统环境变量ANDROID_HOME。 2.Appium 2.1 直接下载安装 官网下载安装appium-desktop-setup.exe。 2.2 通过npm下载安装 appium本质是一个nodejs库所以要先安装n...

维他ViTa
35分钟前
2
0
【git命令】git远程操作相关命令(remote 、push、fetch 、pull)

git系统图 git remote 为了便于管理,Git要求每个远程主机都必须指定一个主机名。为了便于管理,Git要求每个远程主机都必须指定一个主机名。 git remote【查看创库名】 git remote 在我们c...

echojson
44分钟前
2
0
MacOS安装单机版HBase

MacOS安装HBase,必然是用于测试了,从简入手、从简配置。 直接通过brew安装即可: brew install hbase 成功安装后,验证是否成功,如果不出意外的话,应该有如下输出: RippleMBP:~ userna...

RippleChan
今天
3
0
linux下oracle随操作系统启动而启动

大家一定还记得,我们在windows下安装oracle后,重起windows,数据库会自动启动,但在linux下,如果我们重起了操作系统, 就会发现数据库需要手工去输入,这个本来有好处,让dba知道操作系统已经重起...

突突突酱
今天
4
0
nacos之springboot

本地操作系统:ubuntu18,我使用docker的方式启动nacos服务 docker image方式启动nacos 在docker hub上可以搜到nacos-server List-1.1 拉去最新的版本 mjduan@mjduan-ubuntu:/opt/software$ ...

克虏伯
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部