资讯专栏INFORMATION COLUMN

PHP 算法01之选择排序

NikoManiac / 1474人阅读

摘要:描述选择最小的元素由左到右依次交换顺序即完成元素由小到大的排序。选择排序重点在于选择最小元素。选择排序每次循环都能排好一个元素,因此需要交换的次数等于元素个数。

描述

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

首先,把所有的数据循环一遍找到最小的数,然后和第一个数交换位置。

然后从第二个数起,一直循环到最后一个,找到最小的数和第二个交换。

如此一直找到最后一个。

选择排序每次循环都能排好一个元素,因此需要交换的次数等于元素个数。选择排序是最容易理解的排序方式,通俗的理解方式就是:在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);

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/29072.html

相关文章

  • PHP面试四:逻辑与算法

    摘要:数据结构常见数据结构数组是最简单而且应用最广泛的数据结构特征使用连续内存空间来存储存放相同类型或着衍生类型的元素数组比较特别,可以存放八种数据类型通过下标来访问集合特征保存不重复的元素字典特征就是关联数组,以形式存储栈,与队列相似特征存储数 数据结构 常见数据结构 Array 数组是 最简单 而且 应用最广泛 的数据结构 特征: 1、使用连续内存空间来存储 2、存放相同类型或着衍生类型...

    smartlion 评论0 收藏0
  • PHP算法四大基础算法

    摘要:而在证明算法是正确的基础上,第二步就是分析算法的时间复杂度。算法的时间复杂度反映了程序执行时间随输入规模增长而增长的量级,在很大程度上能很好反映出算法的优劣与否。 showImg(https://segmentfault.com/img/remote/1460000016451712?w=800&h=341); 前言 虽然工作中,你觉得自己并没有涉及到算法这方面的东西,但是算法是程序的...

    isLishude 评论0 收藏0
  • JavaScript专题解读 v8 排序源码

    摘要:插入排序是稳定的算法。所以准确的说,当数组长度大于的时候,采用了快速排序和插入排序的混合排序方法。在对数组进行了一次快速排序后,然后对两个子集分别进行了插入排序,最终修改数组为正确排序后的数组。 JavaScript 专题系列第二十篇,也是最后一篇,解读 v8 排序源码 前言 v8 是 Chrome 的 JavaScript 引擎,其中关于数组的排序完全采用了 JavaScript 实...

    princekin 评论0 收藏0
  • PHP排序算法选择排序

    摘要:二选择排序原理在一列数字中,选出最小数与第一个位置的数交换。至此确定了前两个位置上的数。示例代码选择排序实现思路双重循环完成,外层控制轮数,当前的最小值。 二、选择排序   原理: 在一列数字中,选出最小数与第一个位置的数交换。然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止。(以下都是升序排列,即从小到大排列)   举例说明: $arr =...

    walterrwu 评论0 收藏0
  • 利用PHP实现常用的数据结构排序(小白系列文章七)

    摘要:排序严格来说不算数据结构,更应该归于算法一类,因为数据结构指的是数据与数据之间的关系,排序参与其中,更多的是让数据状态发生了改变。 排序严格来说不算数据结构,更应该归于算法一类,因为数据结构指的是数据与数据之间的关系,排序参与其中,更多的是让数据状态发生了改变。于是,我们开始用PHP来聊聊算法。 引子 其实有一句话说的是不错的,不必重复造轮子,所以下面我将引用别人的文章作为本文的引文,...

    jayzou 评论0 收藏0

发表评论

0条评论

NikoManiac

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<