很多站长朋友们都不太清楚php数组冒泡排序,今天小编就来给大家整理php数组冒泡排序,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 一帖看懂PHP面试必考题:什么是冒泡排序 2、 php冒泡排序法~呢? 3、 php冒泡排序怎么排? 4、 php二维数组如何冒泡排序对角输出 5、 PHP实现常见的排序算法 一帖看懂PHP面试必考题:什么是冒泡排序//首先定义一个数组;
<?php
$arr=array(23,5,26,4,9,85,10,2,55,44,21,39,11,16,55,88,421,226,588);
// 计算数组的长度;
$n =count($arr);
// 外层循环n-1
for($h=0;$h<$n-1;$h++){
//内层循环n-h-1
for($i=0;$i<$n-$h-1;$i++){
//判断数组大小,颠倒位置(从小往大排序,还是从大往小)
if($arr[$i]>$arr[$i+1]){
//定义空容器$kong,然后将两个判断中大的装进去
$kong=$arr[$i+1];
//大的这时就空了,然后将小的装进去
$arr[$i+1]=$arr[$i];
//然后将小的在装到空的进去。这就实现了从小往大排序,从大往小与此相反
$arr[$i]=$kong; }
}}
最后运行结果如下:
php编程冒泡排序
完整代码粘贴如下:
//冒泡排序
$arr=array(23,5,26,4,9,85,10,2,55,44,21,39,11,16,55,88,421,226,588);
$n =count($arr);
//echo $n;
for($h=0;$h<$n-1;$h++){//外层循环n-1
for($i=0;$i<$n-$h-1;$i++){
if($arr[$i]>$arr[$i+1]){//判断数组大小,颠倒位置
$kong=$arr[$i+1];
$arr[$i+1]=$arr[$i];
$arr[$i]=$kong;
}
}
}
var_dump($arr);
php冒泡排序法~呢?$arr=array(1,43,54,62,21,66,32,78,36,76,39);
function getpao($arr)
{
$len=count($arr); //设置一个空数组 用来接收冒出来的泡 //该层循环控制 需要冒泡的轮数
for($i=1;$i<$len;$i++)
{ //该层循环用来控制每轮 冒出一个数 需要比较的次数
for($k=0;$k<$len-$i;$k++)
{ if($arr[$k]>$arr[$k+1])
{
$tmp=$arr[$k+1];
$arr[$k+1]=$arr[$k];
$arr[$k]=$tmp;
}
}
} return $arr;
}
网页链接
php冒泡排序怎么排?按照你的要求,编写的冒泡排序的PHP程序如下
(注意因为键的值是字符串类型,所以按照字符大小从小到大排序)
原理是把键值对数组拆成键值的二维数组,然后根据值排序,最后再组装成键值对数组
<?php
$a=Array("a"=>"107","b"=>"5448","c"=>"522");
foreach($a as $k=>$v) $d[] = array($k, $v);
for($i=0;$i<count($d)-1;$i++){
for($j=0;$j<count($d)-1-$i;$j++){
if($d[$j][1]>$d[$j+1][1]){
$temp=$d[$j];
$d[$j]=$d[$j+1];
$d[$j+1]=$temp;
}
}
}
$arr = array();
foreach($d as $v) $arr[$v[0]] = $v[1];
var_dump($arr);
?>
php二维数组如何冒泡排序对角输出将一维数组的改一下就可以了
假设数组是a[m][n],可以用下面的方法
for(pass=1;pass<m*n;pass++)
{
for(i=0;i<m*n-1;i++)
{
if(a[i/n][i%n]>a[(i+1)/n][(i+1)%n])
{
hold=a[i/n][i%n];
a[i/n][i%n]=a[(i+1)/n][(i+1)%n];
a[(i+1)/n][(i+1)%n]=hold;
}
}
}
其实是做了一个二维和一维间的一一映射
PHP实现常见的排序算法注:为方便描述,下面的排序全为正序(从小到大排序)
假设有一个数组[a,b,c,d]
冒泡排序依次比较相邻的两个元素,如果前面的元素大于后面的元素,则两元素交换位置;否则,位置不变。具体步骤:
1,比较a,b这两个元素,如果a>b,则交换位置,数组变为:[b,a,c,d]
2,比较a,c这两个元素,如果a<c,则位置不变,数组变为:[b,a,c,d]
3,比较c,d这两个元素,如果c>d,则交换位置,数组变为:[b,a,d,c]
完成第一轮比较后,可以发现最大的数c已经排(冒)在最后面了,接着再进行第二轮比较,但第二轮比较不必比较最后一个元素了,因为最后一个元素已经是最大的了。
第二轮比较结束后,第二大的数也会冒到倒数第二的位置。
依次类推,再进行第三轮,,,
就这样最大的数一直往后排(冒),最后完成排序。所以我们称这种排序算法为冒泡排序。
选择排序是一种直观的算法,每一轮会选出列中最小的值,把最小值排到前面。具体步骤如下:
插入排序步骤大致如下:
快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来,且在大部分真实世界的数据,可以决定设计的选择,减少所需时间的二次方项之可能性。
步骤:
从数列中挑出一个元素,称为 “基准”(pivot),
重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作。
递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序。
关于php数组冒泡排序的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。
查看更多关于php数组冒泡排序 php冒泡排序面试题的详细内容...