1.冒泡排序算法改进:

方法一:

 function bubbleSort($arr){//$arr(1...n)是待排序的文件,采用自下向上扫描,对$arr做冒泡排序
$bFlag = true; //交换标志
for($i=; $i<count($arr); $i++){ //最多做n-1趟排序
$bFlag = false; //本趟排序开始前,交换标志应为假
for($j = count($arr)-; $j >= $i; $j--){ //对当前无序区$arr[i..n]自下向上扫描
if( $arr[$j+] < $arr[$j] ){//交换记录
$temp = $arr[$j+]; //$temp不是哨兵,仅做暂存单元
$arr[$j+] = $arr[$j];
$arr[$j] = $temp;
$bFlag = true; //发生了交换,故将交换标志置为真
}
}
if(!$bFlag){ //本趟排序未发生交换,提前终止算法
break;
}
} //endfor(外循环)
print_r($arr);
} //BubbleSort

方法二:

 function bubbleSort($arr){
$bSort = false;
for ($i=; $i<count($arr) && !$bSort; $i++) {
$bSort = true;
for ($j = ; $j<count($arr) - $i - ; $j++) {
if ($arr[$j] > $arr[$j+]) {
$bSort = false;
// 不使用第三个变量
$arr[$j] = $arr[$j] + $arr[$j+];
$arr[$j+] = $arr[$j] - $arr[$j+];
$arr[$j] = $arr[$j] - $arr[$j+];
}
}
}
}

2.快速排序算法:

 function quick_sort($array) {
if (count( $array ) <= ) return $array;
$key = $array [];
$left_arr = array ();
$right_arr = array (); for($i = ; $i < count( $array ); $i ++) {
if ($array [$i] <= $key)
$left_arr [] = $array [$i];
else
$right_arr [] = $array [$i];
}
$left_arr = quick_sort ( $left_arr );
$right_arr = quick_sort ( $right_arr );
return array_merge ( $left_arr, array ($key ), $right_arr );
}

快速、冒泡排序算法(PHP版)的更多相关文章

  1. 冒泡排序算法 C#版

    冒泡排序算法的运作如下: 1.比较相邻的元素.如果第一个比第二个大,就交换他们两个. 2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.在这一点,最后的元素应该会是最大的数. 3.针对所 ...

  2. 冒泡排序(js版)

    基本思想:两两比较相邻记录的关键字,如果反序则交换,直至没有反序为止. 最初的冒泡排序(初级版): //从小到大 function BubbleSort(arr){ var i,j,temp; for ...

  3. 常用排序算法--java版

    package com.whw.sortPractice; import java.util.Arrays; public class Sort { /** * 遍历一个数组 * @param sor ...

  4. java 基础排序(冒泡、插入、选择、快速)算法回顾

    java 基础排序(冒泡.插入.选择.快速)算法回顾 冒泡排序 private static void bubbleSort(int[] array) { int temp; for (int i = ...

  5. C#冒泡排序算法

    用了两种形式的数据,一个是泛型List,一个是数据int[].记录一下,作为自己学习过程中的笔记. using System; using System.Collections.Generic; us ...

  6. c#-冒泡排序-算法

    冒泡排序(Bubble Sort) 冒泡排序算法的运作如下: 1.比较相邻的元素.如果第一个比第二个大,就交换他们两个. 2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.在这一点,最后 ...

  7. C# Winform 通过FlowLayoutPanel及自定义的编辑控件,实现快速构建C/S版的编辑表单页面

    个人理解,开发应用程序的目的,不论是B/S或是C/S结构类型,无非就是实现可供用户进行查.增.改.删,其中查询用到最多,开发设计的场景也最为复杂,包括但不限于:表格记录查询.报表查询.导出文件查询等等 ...

  8. sdut 1592转置矩阵【稀疏矩阵的压缩存储】【快速转置算法】

    转置矩阵 Time Limit: 1000ms   Memory limit: 32768K  有疑问?点这里^_^ 题目链接:http://acm.sdut.edu.cn/sdutoj/proble ...

  9. java冒泡排序算法

    /** * 冒泡排序算法:每次 * @author shaobn * @description 每次都会确定一个最大的值 即固定了,所以会每次-i; */ public class Test1 { p ...

随机推荐

  1. Django路由

    一.路由流程 1. 用户浏览器发出请求后,通过根url设置,去找urlpattern变量.在setting.py中对 ROOT_URLCONF进行配置,以确定根URLconf(URL configur ...

  2. hdu 4099 Revenge of Fibonacci Trie树与模拟数位加法

    Revenge of Fibonacci 题意:给定fibonacci数列的前100000项的前n位(n<=40);问你这是fibonacci数列第几项的前缀?如若不在前100000项范围内,输 ...

  3. Spring核心框架 - AOP的原理及源码解析

    一.AOP的体系结构 如下图所示:(引自AOP联盟) 层次3语言和开发环境:基础是指待增加对象或者目标对象:切面通常包括对于基础的增加应用:配置是指AOP体系中提供的配置环境或者编织配置,通过该配置A ...

  4. MySQL 5.7 启用查询日志

    MySQL版本:5.7 新版本的 my.ini 文件改动了,导致原先启用查询日志的方法不再适用 新版本的启用方法如下: 1. 修改 C:\ProgramData\MySQL\MySQL Server ...

  5. [转载]在C#中使用官方驱动操作MongoDB

    在C#中使用官方驱动操作MongoDB 8.1)下载安装 想要在C#中使用MongoDB,首先得要有个MongoDB支持的C#版的驱动.C#版的驱动有很多种,如官方提供的,samus. 实现思路大都类 ...

  6. Firefly是什么?有什么特点?

    原地址:http://bbs.gameres.com/forum.php?mod=viewthread&tid=219285 Firefly是免费.开源.稳定.快速扩展.能 “热更新”的分布式 ...

  7. 为tomcat启用nio机制

    tomcat的运行模式有3种.修改他们的运行模式.3种模式的运行是否成功,可以看他的启动控制台,或者启动日志.或者登录他们的默认页面http://localhost:8080/查看其中的服务器状态. ...

  8. 简单讨论数据类型(byte)强制转化后的数值变化规律

    package com.wangzhu.datatype; /** * Java基本数据类型练习 * * @ClassName: DataTypes * @Description: TODO * @a ...

  9. ASP.NET控件Button (e.CommandArgument的使用方法)

    e.CommandArgument的使用方法 1. 在 Web 窗体页上显示普通按钮 (Button) 控件. <asp:Button id="MyButton" Text= ...

  10. xml解析代码示例

    List<Entry> list = new ArrayList<>(); Entry entry = null; try { int eventType = response ...