php实现冒泡排序
冒泡排序是非常容易理解和实现,,以从小到大排序举例:
设数组长度为N。
1.比较相邻的前后二个数据,如果前面数据大于后面的数据,就将二个数据交换。
2.这样对数组的第0个数据到N-1个数据进行一次遍历后,最大的一个数据就“沉”到数组第N-1个位置。
3.N=N-1,如果N不为0就重复前面二步,否则排序完成。
方案一:
function bubble1_sort($array){
$count=count($array);
if($count<=1){
return $array;
}
for($i=0;$i<$count;$i++){
for($j=0;$j<$count;$j++){
if($array[$i]<$array[$j]){
$temp=$array[$i];
$array[$i]=$array[$j];
$array[$j]=$temp;
}
}
}
return $array;
}
方案二:
function bubble2_sort($array){
$count=count($array);
if($count<=1){
return $array;
}
for($i=0;$i<$count;$i++){
for($j=1;$j<$count-$i;$j++){
if($array[$j-1]>$array[$j]){
$temp=$array[$j-1];
$array[$j-1]=$array[$j];
$array[$j]=$temp;
}
}
}
return $array;
}
方案三:
设置一个标志,如果这一趟发生了交换,则为true,否则为false。明显如果有一趟没有发生交换,说明排序已经完成。
function bubble3_sort($array){
$count=count($array);
if($count<=1){
return $array;
}
$flag=true;
$j=$count;
while($flag){
$flag=false;
for($i=1;$i<$j;$i++){
if($array[$i-1]>$array[$i]){
$temp=$array[$i-1];
$array[$i-1]=$array[$i];
$array[$i]=$temp;
$flag=true;
}
}
$j--;
}
return $array;
}
方案四:
如果有100个数的数组,仅前面10个无序,后面90个都已排好序且都大于前面10个数字,那么在第一趟遍历后,最后发生交换的位置必定小于10,且这个位置之后的数据必定已经有序了,记录下这位置,第二次只要从数组头部遍历到这个位置就可以了。
function bubble4_sort($array){
$count=count($array);
if($count<=1){
return $array;
}
$flag=$count;
while($flag>0){
$k=$flag;
$flag=0;
for($j=1;$j<$k;$j++){
if($array[$j-1]>$array[$j]){
$temp=$array[$j-1];
$array[$j-1]=$array[$j];
$array[$j]=$temp;
$flag=$j;
}
}
}
return $array;
}
方案五:
function bubble_sort($array){
$count=count($array);
if($count<=1){
return $array;
}
for($i=$count-1;$i>0;$i--){
$flag=false;
for($j=0;$j<$count;$j++){
if($array[$j]>$array[$j+1]){
$temp=$array[$j];
$array[$j]=$array[$j+1];
$array[$j+1]=$temp;
$flag=true;
}
}
if(!$flag)
break;
}
return $array;
}
php实现冒泡排序的更多相关文章
- [C#][算法] 用菜鸟的思维学习算法 -- 马桶排序、冒泡排序和快速排序
用菜鸟的思维学习算法 -- 马桶排序.冒泡排序和快速排序 [博主]反骨仔 [来源]http://www.cnblogs.com/liqingwen/p/4994261.html 目录 马桶排序(令人 ...
- 算法与数据结构(十三) 冒泡排序、插入排序、希尔排序、选择排序(Swift3.0版)
本篇博客中的代码实现依然采用Swift3.0来实现.在前几篇博客连续的介绍了关于查找的相关内容, 大约包括线性数据结构的顺序查找.折半查找.插值查找.Fibonacci查找,还包括数结构的二叉排序树以 ...
- Html5 冒泡排序演示
冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法. 它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要 ...
- javascript冒泡排序
数组冒泡排序算法(升序) 升序:小数在前,大数在后 冒泡排序的原则:每次比较相邻两个元素,如果前一个数>后一个数,说明违反升序的要求,就将两数交换位置.否则,保持不变.继续比较下一对. 例如:玩 ...
- Java中的经典算法之冒泡排序(Bubble Sort)
Java中的经典算法之冒泡排序(Bubble Sort) 神话丿小王子的博客主页 原理:比较两个相邻的元素,将值大的元素交换至右端. 思路:依次比较相邻的两个数,将小数放在前面,大数放在后面.即在第一 ...
- C#冒泡排序算法
用了两种形式的数据,一个是泛型List,一个是数据int[].记录一下,作为自己学习过程中的笔记. using System; using System.Collections.Generic; us ...
- python排序之二冒泡排序法
python排序之二冒泡排序法 如果你理解之前的插入排序法那冒泡排序法就很容易理解,冒泡排序是两个两个以向后位移的方式比较大小在互换的过程好了不多了先上代码吧如下: 首先还是一个无序列表lis,老规矩 ...
- 以冒泡排序为例--malloc/free 重定向stdin stdout
esort.c 代码如下,可关注下mallloc/free,freopen重定向的用法,排序为每轮将最小的数放在最前面: #include<stdio.h> #include<mal ...
- 浅谈C++之冒泡排序、希尔排序、快速排序、插入排序、堆排序、基数排序性能对比分析之后续补充说明(有图有真相)
如果你觉得我的有些话有点唐突,你不理解可以想看看前一篇<C++之冒泡排序.希尔排序.快速排序.插入排序.堆排序.基数排序性能对比分析>. 这几天闲着没事就写了一篇<C++之冒泡排序. ...
- 排序算法总结第二弹----冒泡排序---javascript描述
上篇博文总结了选择排序,这篇来看冒泡排序,接上篇. 冒泡排序思想:若是正再将一组数据升序排序, 第一趟:比较相邻的数据,当左侧值大于右侧值将他们进行交换,将较小值向前浮动,大值向后冒泡,直至比较到最后 ...
随机推荐
- HBase MemStoreFlusher
HBase MemStore Flush由类org.apache.hadoop.hbase.regionserver.MemStoreFlusher实现,具体表现为HRegionServer中的一个实 ...
- Wii硬盘版玩机心得
若干年前在电玩巴士买了一台硬盘版的Wii,下面是我的玩机心得: 查看Wii的系统版本信息 链接:http://www.cnblogs.com/duxiuxing/p/4251693.html Wii硬 ...
- 转自http://blog.sina.com.cn/daylive——C++ STL map
Map是c++的一个标准容器,她提供了很好一对一的关系,在一些程序中建立一个map可以起到事半功倍的效果,总结了一些map基本简单实用的操作! 1.map最基本的构造函数: map<string ...
- hadoop 运行 datanode , mac 系统
问题描述 今天使用 hadoop 时,发现无法通过下面命令上传文件到 hadoop 文件系统,会报错. bin/hadoop fs -put input . 运行 jps 后,输出如下: Resour ...
- tungsten
./tools/tungsten-installer --master-slave -a --datasource-type=mysql --master-host=master.puppet.org ...
- objc非主流代码技巧
原文:http://blog.sunnyxx.com/2014/08/02/objc-weird-code/ [娱乐向]objc最短的方法声明 先来个娱乐向的.方法声明时有一下几个trick: 返回值 ...
- js打开新的链接下载文件
var p =params.join("&"); var a = document.createElement('a'); a.href = 'report/exportp ...
- QE是什么
量化宽松(Quantitative Easing,简称QE),是一种货币政策,主要指各国央行通过公开市场购买政府债券.银行金融资产等做法.量化宽松直接导致市场的货币供应量增加,可视为变相“印钞”.市场 ...
- Java 编程的动态性 第1 部分: 类和类装入--转载
原文地址:http://www.ibm.com/developerworks/cn/java/j-dyn0429/ 本文是这个新系列文章的第一篇,该系列文章将讨论我称之为 Java 编程的动态性的一系 ...
- yii图片上传
http://wuhai.blog.51cto.com/2023916/953300 首先感谢这里的博主,提供了思路,不过在调用 $model->b_image->extensionNam ...