php冒泡 插入选择 排序,说说PHP数组的三种排序(冒泡/选择/插入)方法
说说PHP数组的三种排序(冒泡/选择/插入)方法
PHP
#数组 #排序 #冒泡 #选择 #插入2012-05-30 10:17
一、冒泡排序法
说明:找到最大的数,排列到最后面,然后继续找
例:
$arr = array(3,5,-1,0,2);
for($i=0;$i
for($j=0;$j
if($arr[$j]>$arr[$j+1]){
$temp = $arr[$j];
$arr[$j]=$arr[$j+1];
$arr[$j+1]=$temp;
}
}
}
理解:
3,5,-1,0,2
//从第一个数开始往后比较,如果比后面的数大则与后面的数调位置
//第一次,3小于5,那么不变
//第二次,5大于-1,那么变成
3,-1,5,0,2
//第三次,5大于0
3,-1,0,5,2
//第四次,5大于2
3,-1,0,2,5
至此完成一次内循环,此时最后一个数完成排序,下次将不参与
3,-1,0,2,5
第二次外循环开始
第一次:3大于-1
-1,3,0,2,5
第二次:3大于0
-1,0,3,2,5
第三次:3大于2
-1,0,2,3,5
至此完成后面两位数的排序了,接下来类推
-1,0,2,3,5
二、选择排序法
说明:先假设第一个数就是最小的数,然后将后面的数依次与它比较,如果假设的数不是最小的数,就将它与后面的最小的数调换位置
$arr=array(2,1,-1,3,0);
for($i=0;$i
$minval = $arr[$i];
$minindex = $i;
for($j=1+$i;$j
if($arr[$j]
$minval = $arr[$j];
$minindex = $j;
}
}
$temp = $arr[$i];
$arr[$i] = $arr[$minindex];
$arr[$minindex] = $temp;
}
理解:
2,1,-1,3,0
//先假设第一个数2为最小值,它后面的数依次与2做比较,寻找到最小的那个数
过程:
1小于2,那么minval=1
-1小于1,那么minval=-1
3大于-1,不变
0大于-1,不变
那么现在就找到了该数组中最小的数了为-1
将-1与2调换位置就完成第一个数的排序了
那么现在数组变成
-1,1,2,3,0
现在第一个数-1已经为有序,所以不参与比较了,往后面继续
现在假设minval=1
2大于1,不变
3大于1,不变
0小于1,那么minval=0
现在一次循环完成,调换0与1的位置完成第二个数的排序
那么现在数组变成
-1,0,2,3,1
//后面的推法与上面相同。。。
三、插入排序法
说明:先假设一个数组中的第一个数为单独的有序数组,再将后面的一个数与它【这里随它I的增长,就变成它们了】做比较,如果后面的数比假设的数还小,则将小的那个数后移,最后将那个数移到最前面
$arr=array(2,1,-1,3,0);
for($i=1;$i
$insertval=$arr[$i];
$insertindex = $i-1;
while($insertindex>=0 && $insertval
$arr[$insertindex+1]=$arr[$insertindex];
$insertindex--;
}
$temp = $arr[$i];
$arr[$insertindex+1]=$insertval;
}
理解:
2,1,-1,3,0
//第一次,先保存待插入的数1为insertval,再拿 insertval 与2比较,1小于2,所以把2后移,变成如下的图
2,2,-1,3,0
//此时2前面没有数字了,insertindex=0,所以比较完成,那么将insertval插入到寻找到的这个位置。变成如下图
1,2,-1,3,0
//此时,1,2变成有序数组
//第二次,先保存待插入的数-1为insertval,再拿insertval与2做比较,-1小于2,所以把2后移,变成如下图
1,2,2,3,0
//此时,再拿insertval与1做比较,-1小于1,那么把-1后移,变成如下图(这就是一个拿待插入数与前面的有序数组比较的过程)
1,1,2,3,0
//此时,insertindex到头了,所以将insertval插入该位置
-1,1,2,3,0
//后面推法如上
相关文章
php冒泡 插入选择 排序,说说PHP数组的三种排序(冒泡/选择/插入)方法相关推荐
- Java创建数组的三种方式 (以及length方法是否能获取数组中元素的个数)
Java创建数组的三种方法 import java.util.Arrays; public class Sum { public static void main(String[] args){ in ...
- PHP中数组的三种排序方法
一.冒泡排序法 说明:找到最大的数,排列到最后面,然后继续找 例: $arr = array(3,5,-1,0,2); for($i=0;$i<count($arr)-1;$i++){ for( ...
- php遍历数组哪个效率高,PHP遍历数组的三种方法及效率对比分析
PHP遍历数组的三种方法及效率对比分析 发布于 2015-03-04 21:55:27 | 129 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本语言PHP(外文名: Hypertext ...
- 排序算法(01)— 三种简单排序(冒泡、插入、选择)
一.概述 排序是数据处理中十分常见且核心的操作,虽说实际项目开发中很小几率会需要我们手动实现,毕竟每种语言的类库中都有n多种关于排序算法的实现.但是了解这些精妙的思想对我们还是大有裨益的. 1.1 排 ...
- Java学习 第三章 数组(三)排序算法
** Java学习 第三章 数组(三)排序算法 ** 主要内容:排序算法.排序算法横向比较.Arrays工具类的使用.数组常见异常 1.数组中涉及到的常见算法:排序算法 1.1 排序算法分类:内部排序 ...
- 读取Java文件到byte数组的三种方式及Java文件操作大全(包括文件加密,String加密)
读取Java文件到byte数组的三种方式 package zs;import java.io.BufferedInputStream; import java.io.ByteArrayOutputSt ...
- 快排堆排归排三种排序的比较
目录 快排 堆排序 归并排序 三种排序的比较 快排 快速排序中最简单的(递归调用) 注:倒序,和 列表中有大量重复元素时,时间复杂度很大 快排例子 注:快排代码实现(类似于二叉树 递归调用) 时间复杂 ...
- SQLaichemy三种排序方式
一.介绍 SQLALchemy也是一个python的ORM框架,django内部的ORM框架只适用于django,而SQLALchemy适用于所有python的web框架 SQLAlchemy是一个基 ...
- SQL 中 Rank、row_number、dense_rank 三种排序函数的区别
现有一张工资表,需要对其进行排名,工资相同的人并列排名,然后再排名,很多刚接触的小伙伴估计第一时间想到Rank()函数或row_number() 函数,但是结果出来后并不是自己想要的,在这里就给大家介 ...
最新文章
- 修改服务器里的端口,怎么修改windows服务器登陆端口号
- jittor和pytorch生成网络对比之gan
- 互联网+办公”中的网红企业网盘——坚果云
- 抽奖的箱子_王者荣耀近期问题不断,昭君星元箱子开出空气,瑶新皮涉嫌抄袭...
- Java架构师要具备哪些能力?
- boost::regex模块captures相关的测试程序
- C++类的组合和前向引用
- 2017 开源软件排行_2017年最佳开源教程
- ASP.Net学习笔记010--加法计算器
- linux suse最新版本,SUSE Linux Enterprise Server 15 正式发布
- 数组模拟乘法(大数乘法)
- 1424 零树 (树形DP)
- 模组管理器功能模块热插拔流程
- Linux命令—vi命令详解
- RTOS中动态内存和静态内存管理机制
- windows server2012 R2 离线中文语言包下载与安装
- 连续分配、链接分配和索引分配详解
- Juniper-SRX-基于域控认证的用户防火墙
- Least Angel Regression
- 医学影像分割论文合集