回炉重造,第十二话:php数组遍历排序

来源:互联网 发布:企业数据架构 编辑:程序博客网 时间:2024/05/22 06:44

半条咸鱼,亦要仰望星空脚踏实地


下面来学习php种的数组相关的知识


数组:可以存储多个数据

创建数组:$arr[0]=123;

                  $arr[1]=456;

                  $arr[3]=789;

[0]--->这个为下标或者称为关键字

$arr[0]-->称为数组的一个元素

$arr[0]=123;123代表$arr[0]元素对应的值

$arr-->这是该数组的名称


php的数组中,元素存放的值可以是任意数据类型!


foreach更适用于数组的遍历,因为其不会局限于下标

例:$arr['name']="zhoupeng";

       $arr['love']="shuting";

       这中形式的下标用for循环无法遍历出,因为for循环下标适用数字

       用foreach遍历可以:

       foreach ($arr as $key=>$val){

                  echo $key."=".$val."<br/>";

       }

如果是适适用使用用for循环、while、do。。。while来遍历,则数组下标需要是数字

/php数组的相关函数
//1.count
$a = array(1,2,3,4,5);
$b = 123;
echo count($a)."<br>";
//2.is_array,判断是否是数组
echo is_array($b);
//3.print_r和var_dump,显示数组
print_r($a);
var_dump($a);
//4.explode,拆分字符串
$str = "1,2,3,4,5,3,6,0";
$arr = explode(",",$str);
var_dump($arr);//5.unset。,删除数字数组数  


数组运算符例子名称结果$a + $b联合$a$b 的联合。$a == $b相等如果 $a$b 具有相同的键/值对则为 TRUE。$a === $b全等如果 $a$b 具有相同的键/值对并且顺序和类型都相同则为 TRUE。$a != $b不等如果 $a 不等于 $b 则为 TRUE。$a <> $b不等如果 $a 不等于 $b 则为 TRUE。$a !== $b不全等如果 $a 不全等于 $b 则为 TRUE


下面来学习以下数组的排序了:

内部排序

交换式排序法

1.冒泡排序

2.选择排序

3.插入排序

4.快速排序:速度非常快的一种排序方法


外部排序

因为数据量过大所以必须借助外部文件来完成


冒泡排序:

<?php
    $arr=array(0,7,5,3,18,-50);
    $temp = 0;//中间变量
    //冒泡排序,从小到大排
    //外循环
    for($i=0;$i<count($arr)-1;$i++){
         //内层循环
         for($j=0;$j<count($arr)-1-$i;$j++){
          //前一个数比后面大,两数交换
              if($arr[$j]>$arr[$j+1]){
                    $temp = $arr[$j];
                    $arr[$j] = $arr[$j+1];
                    $arr[$j+1] = $temp;
              }
         }//第二层循环就是将最大的数抛到最后,所以$j<count($arr)-1-$i,减去$i是去除之前抛后的
    }

若封装成函数就要注意,数组传递的是数值,对象传递的是地址,在函数中传地址可以在调用数组前加&


选择排序:
//选择排序法
    $arr = array(5,12,-3,0,28,-15);
    $temp = 0;
    for($i=0;$i<count($arr)-1;$i++){
         $minVal = $arr[$i];//假设$i就是最小的数
         $minIndex = $i;//记录我认为最小数的下标
         for($j=$i+1;$j<count($arr);$j++){
          //判断是不是最小值
          if($minVal>$arr[$j]){
           $minVal = $arr[$j];
           $minIndex = $j;
          }
         }
         //最后交换
         $temp=$arr[$i];
         $arr[$i] = $arr[$minIndex];
         $arr[$minIndex] = $temp;
        
    }
    print_r($arr);

    print_r($arr);


插入排序:

//插入排序
    $arr = array(0,-3,-5,-1,1,6,7,-9);
    //先默认下标为0的数为一个有序的数
    for($i=1;$i<count($arr);$i++){
     //$insertVal是准备插入的数
         $insertVal = $arr[$i];
         //准备先和前一位数比较
         $insertIndex = $i-1;
         //若条件满足,则我们还没有找到适当的位置
         while($insertIndex>=0&&$insertVal<$arr[$insertIndex]){
          //同时把数后移
          $arr[$insertIndex+1]=$arr[$insertIndex];
          $insertIndex--;
         }
         //插入
         $arr[$insertIndex+1]=$insertVal;
    }
    print_r($arr);

速度上:冒泡<选择<插入<快速
快速排序的思想是选择中间数,然后比中间值小的在左边,大的在右边,然后分出来部分继续利用该思想分

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 荣耀6主板烧坏了怎么办 虚拟运营商倒闭了号怎么办 买到二次放号怎么办 新运动鞋鞋穿着有点紧怎么办 一件代发被买家退货后怎么办? 洗了翻毛的鞋子怎么办 猫眼竹芋泡根了怎么办 双线花叶子卷了怎么办 华为云收藏满了怎么办 小米6云空间满了怎么办 华为云存储已满怎么办 苹果云备份空间不足怎么办 oppor9指纹与密码忘记怎么办 oppo显示密码格式不对怎么办 oppo云服务密码忘了怎么办 小米云内存满了怎么办 id储存空间满了怎么办 苹果手机邮箱服务器连接失败怎么办 苹果查看id闪退怎么办 域名卖出去后涉及赌博怎么办 发票认证后对方作废了怎么办 手机在屋里没信号怎么办 百度云上传文件和谐怎么办 收货地址写错了怎么办 阿里巴巴国际版出现加密令牌怎么办 淘宝寄货到转运仓拒收怎么办 淘宝已发货买家申请退货怎么办 买家给了一个差评不接电话怎么办 卖家单号填错了怎么办 拼多多虚假发货买家怎么办 买家退款后又收到货怎么办 买家确认收货已超时怎么办 淘宝买家不确认收货怎么办 买家快递单号填错怎么办 买家不确认收货不评价怎么办 淘宝不给改地址怎么办 淘宝快递发货后申请退款怎么办 摄影公司收钱后跑了怎么办 淘宝上申请退款卖家不处理怎么办 淘宝买东西商家发错货退回怎么办 假模特头头发毛燥怎么办