博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP-----数组和常见排序算法
阅读量:4966 次
发布时间:2019-06-12

本文共 4552 字,大约阅读时间需要 15 分钟。

数组的创建

1 
'.$arr[$i];11 }12 //第二种方法13 $b=array(1,23,20,43);14 15 for($i=0;$i
'.$b[$i];17 }18 19 //第三种方法---自己指定下标----但是遍历数组的时候使用foreach循环20 $c['paxster']='pax';21 $c['boychik']='boy';22 foreach($c as $val){23 echo $val.'
';24 }25 foreach ($c as $key => $value) {26 echo $key.'='.$value.'
';27 }28 29 //js里的创建数组30 //var arr=new Array();31 //var a = new Array(5); 指定长度32 //var abb=[];33 ?>

数组的遍历和一些细节。

还可以通过数组运算符对多个数组进行操作,详细参看php手册。

1 
'hello',22,33); 4 //echo $arr[1];---->>报错 5 //echo $arr[3];---->>22 6 //echo $arr[5];---->>报错 7 8 //2.重新赋值--------用后定义的值覆盖即可 9 $abb=array(1=>4,32,23);10 $abb[1]=40;11 echo $abb[1];12 13 //3.布尔值作为下标14 $acc[true]='wuhan';15 $acc[false]='hubei';16 $acc[null]='china';17 $acc[12.3]='earth';18 19 echo $acc[1].'
';20 echo $acc[0].'
';21 echo $acc[null].'
';22 echo $acc[''].'
';23 24 echo $acc[12];25 echo $acc[12.3];26 27 //打印数组的详细信息28 print_r($acc);29 var_dump($acc);30 31 //4.动态改变数组32 $add=array(2,3);33 $add[4]=34;34 echo $add[4];//会把两者之间空余的元素忽略,后面添加的元素追加到前面的地址上35 36 //5.数组引用的陷阱---会把addme解析为常量,提示notice,所以把addme定义为一个字符串就不会出错37 const addme='QQ';38 $e[addme]='me';39 echo $e[addme];40 41 //6.is_array----是则返回1,不是则返回空42 $f=array(00,12);43 echo is_array($f);44 45 //拆分字符串explode46 $g='1 2 3 4 5';47 $h='1-2-3-4-5';48 $gg=explode(" ",$g);49 $hh=explode("-",$h);50 print_r($gg);51 print_r($hh);52 53 //使用4种方式遍历数组54 //for55 $dd=array(20,30,40,50,60);56 57 for($i=0;$i
'.$dd[$i];59 }60 //while61 $i=0;62 while($i
'.$dd[$i];64 ++$i;65 //$i++;66 }67 //do..while68 $i=0;69 do{70 echo '
'.$dd[$i];71 ++$i;72 }while($i
$value){75 //echo $key=$value.'
';76 echo "$key=$value
";77 }78 ?>

排序算法-----1.冒泡算法(去年学c的时候老师详细讲解了冒泡法,也是最简单的排序算法,计算效率相对较低)

1 //bubble sort 2     $arr=array(20,-20,0,5,-49); 3     /*$temp=0; 4     for($i=0;$i
$arr[$j+1]){ 7 $temp=$arr[$j]; 8 $arr[$j]=$arr[$j+1]; 9 $arr[$j+1]=$temp;10 }11 }12 }13 print_r($arr);*/14 //封装sort函数------形参加上地址符15 function bubbleSort(&$arr){16 $temp=0;17 for($i=0;$i
$arr[$j+1]){20 $temp=$arr[$j];21 $arr[$j]=$arr[$j+1];22 $arr[$j+1]=$temp;23 }24 }25 }26 }27 bubbleSort($arr);

排序算法-----2.选择排序

1 //selectSort选择排序法 2     function selectSort(&$arr){ 3          4         for($i=0;$i
$arr[$j]){10 $min=$arr[$j];11 $minIndex=$j;12 }13 }14 //交换值15 $temp=$arr[$i];16 $arr[$i]=$arr[$minIndex];17 $arr[$minIndex]=$temp;18 }19 }20 selectSort($arr);

排序算法-----3.插入排序

1 //insertSort插入排序 2     function insertSort(&$arr){ 3         for($i=1;$i
=0&&$insertValue<$arr[$insertIndex]){ 7 $arr[$insertIndex+1]=$arr[$insertIndex]; 8 $insertIndex--; 9 }10 $arr[$insertIndex+1]=$insertValue;11 }12 }13 insertSort($arr);14 print_r($arr);15 var_dump($arr);

排序算法-----4.快速排序---各种语言的排序算法思想大同小异。php的快速排序算法算简单的,java更难一点。

1 function quickSort($arr) { 2   if (count($arr) > 1) { 3     $k = $arr[0]; 4     $x = array(); 5     $y = array(); 6     $_size = count($arr);      7     for ($i=1; $i<$_size; $i++) { 8       if ($arr[$i] <= $k) { 9         $x[] = $arr[$i];10       } else {11         $y[] = $arr[$i];12       }13     }14     $x = quickSort($x);15     $y = quickSort($y);16     return array_merge($x, array($k), $y);17   } else {18     return $arr;19   }20 }

 JS实现快速排序-----

1 var quickSort = function(arr) { 2   if (arr.length <= 1) { return arr; } 3   var pivotIndex = Math.floor(arr.length / 2); 4   var pivot = arr.splice(pivotIndex, 1)[0];//代表中位数 5   var left = []; 6   var right = []; 7   for (var i = 0; i < arr.length; i++){ 8     if (arr[i] < pivot) { 9       left.push(arr[i]);10     } else {11       right.push(arr[i]);12     }13   }14   return quickSort(left).concat([pivot], quickSort(right));15 };

splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。-----

slice()选取数组元素。返回一个新的数组,包含从 start 到 end (不包括end元素)的 arrayObject 中的元素。

concat() 方法用于连接两个或多个数组。-----

转载于:https://www.cnblogs.com/paxster/p/3548599.html

你可能感兴趣的文章
C语言结构体和函数
查看>>
用JAVA编写浏览器内核之实现javascript的document对象与内置方法
查看>>
linux 命令之top
查看>>
洛谷 [P3033] 牛的障碍
查看>>
centos iptables
查看>>
unity3d 移动与旋转 2
查看>>
MyEclipse安装Freemarker插件
查看>>
php 文件下载
查看>>
寻找二叉查找树中比指定值小的所有节点中最大的那个节点
查看>>
如何设置输入框达到只读效果
查看>>
RT3070 USB WIFI 在连接socket编程过程中问题总结
查看>>
MIS外汇平台荣获“2013年全球最佳STP外汇交易商”
查看>>
LeetCode 题解之Add Digits
查看>>
Xml处理工具类(Jdom)
查看>>
hdu1502 , Regular Words, dp,高精度加法
查看>>
20120227_CET6
查看>>
SpringBoot在idea中的热部署配置
查看>>
MyEclipse连接SQL Server 2008数据库的操作方法
查看>>
SqlCel 和MySQL for Excel在批量处理数据上的优劣
查看>>
leetcode【67】-Bulb Switcher
查看>>