专栏首页代码审计PHP基础之排序

PHP基础之排序

前言

之前简单介绍了流程控制,函数,数组等。有兴趣的可以看看。 PHP入门之类型与运算符 PHP入门之流程控制 PHP入门之函数 PHP入门之数组 接下来介绍一下排序,排序是将一组数据,依指定的顺序进行排列的过程。常用的排序方法有冒泡法,选择排序法,插入排序法。

冒泡排序法

思想: 它重复走过要排序的元素列,依次比较两个相邻的元素,如果顺序错误就把它们交换过来,直到没有需要交换的为止。 代码案例:

<?php
#冒泡排序
$myarr=array(4,3,9,1,6,23.5);
function bubbleSort (&$myarr){       
    $temp=0;   #N个数排序,要排N-1次。外层控制循环多少趟
    for ($i=0;$i<count($myarr)-1;$i++){
         #控制每一趟循环的次数。
        for ($j=0;$j<count($myarr)-1-$i;$j++){
            if ($myarr[$j]>$myarr[$j+1]){
                $temp=$myarr[$j];
                $myarr[$j]=$myarr[$j+1];
                $myarr[$j+1]=$temp;
            }
        }
    }

}
bubbleSort($myarr);
print_r($myarr);  #打印数组
?>

输出结果为: Array ( [0] => 1 [1] => 3 [2] => 4 [3] => 6 [4] => 9 [5] => 23.5 )

选择排序法

思想: 假设第一个为最小(大)元素,依次比较,如果错误,交换顺序,找到未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。 代码案例:

<?php
#选择排序
$myarr=array(4,3,9,1,6,23.5);

function selectionSort (&$myarr){    
    $temp=0;
    for ($i=0;$i<count($myarr)-1;$i++){
        #将第一个值认为是最小的值
        $minval=$myarr[$i];
        #记录最小值的下标
        $minindex=$i;
        for ($j=$i+1;$j<count($myarr);$j++){
            if ($minval>$myarr[$j]){
                $minval=$myarr[$j];
                $minindex=$j;
            }
        }
        $temp=$myarr[$i];
        $myarr[$i]=$myarr[$minindex];
        $myarr[$minindex]=$temp;
    }
}
selectionSort($myarr);
print_r($myarr);    #打印数组
?>

输出结果: Array ( [0] => 1 [1] => 3 [2] => 4 [3] => 6 [4] => 9 [5] => 23.5 )

插入排序

思想: 插入排序就像我们玩扑克牌,右手为乱排的,我们一张张查看,为它找合适的位置插入到左手的有序牌中。 插入排序是指在待排序的元素中,假设前面n-1(其中n>=2)个数已经是排好顺序的,现将第n个数插到前面已经排好的序列中,然后找到合适自己的位置,使得插入第n个数的这个序列也是排好顺序的。按照此法对所有元素进行插入,直到整个序列排为有序的过程,称为插入排序。 代码案例:

<?php
#插入排序
$myarr=array(4,3,9,1,6,23.5);

function insertSort (&$myarr){                
    for ($i=1;$i<count($myarr);$i++){
        #这是要插入的数
        $insertval=$myarr[$i];
        #这是和插入的数进行比较
        $insertindex=$i-1;
              #满足条件说明我们还没有找到合适的位置
        while ($insertindex>=0 && $insertval<$myarr[$insertindex]){
            $myarr[$insertindex+1]=$myarr[$insertindex];
            $insertindex--;

        }
        #插入(给$insertval找到合适的位置)
        $myarr[$insertindex+1]=$insertval;
    }
}

insertSort($myarr);
print_r($myarr);
?>

输出结果: Array ( [0] => 1 [1] => 3 [2] => 4 [3] => 6 [4] => 9 [5] => 23.5 )

小结

简单介绍了一下常用的三种排序方法,希望对大家有所帮助。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【php基础】php的几种排序算法的比较

    这里列出了几种PHP的排序算法的时间比较的结果,,希望对大家有所帮助 /* * php 四种排序算法的时间与内置的sort排序比较 * 3000个元素,四种...

    程序员互动联盟
  • 算法学习之排序基础

    #include <iostream> #include <algorithm> using namespace std; void selectionSo...

    慕白
  • 基础算法之排序算法

    快速排序使用分治法(Divide and conquer)策略来把一个序列(list)分为较小和较大的2个子序列,然后递归地排序两个子序列。

    王脸小
  • 基础算法系列之排序算法-2.冒泡排序

    上篇文章给大家讲述了二分查找算法,现在让我们来一起学习另一个基础算法——冒泡排序算法。它是一个排序算法,可以将一个无序的序列排成有序。它将会是我们以后...

    ACM算法日常
  • php基础之Trait

    Trait 是为类似 PHP 的单继承语言而准备的一种代码复用机制。Trait 为了减少单继承语言的限制,使开发人员能够自由地在不同层次结构内独立的类中复用 m...

    爱知汇
  • 基础排序算法

    假如我们现在要排序的数组为[3,1,0,2,8,4,2]。那么选择排序的排序流程为:

    Java学习录
  • 基础排序算法

    使用比较运算符” < ”和” > ”,将相容的序放到输入中,且除了赋值运算符外,这两种运算是仅有的允许对输入数据进行的操作,在这些条件下...

    我是一条小青蛇
  • 算法基础:排序

    从第一个数据开始,依次比较相邻元素的大小。如果前者大于后者,则进行交换操作,把大的元素往后交换。通过多轮迭代,直到没有交换操作为止。冒泡排序就像是在一个水池中处...

    RendaZhang
  • Go基础之--排序和查找操作

    排序操作主要都在sort包中,导入就可以使用了 import("sort") 常用的操作 sort.Ints:对整数进行排序 sort.Strings:对字符串...

    coders

扫码关注云+社区

领取腾讯云代金券