快速、冒泡排序算法(PHP版)
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版)的更多相关文章
- 冒泡排序算法 C#版
冒泡排序算法的运作如下: 1.比较相邻的元素.如果第一个比第二个大,就交换他们两个. 2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.在这一点,最后的元素应该会是最大的数. 3.针对所 ...
- 冒泡排序(js版)
基本思想:两两比较相邻记录的关键字,如果反序则交换,直至没有反序为止. 最初的冒泡排序(初级版): //从小到大 function BubbleSort(arr){ var i,j,temp; for ...
- 常用排序算法--java版
package com.whw.sortPractice; import java.util.Arrays; public class Sort { /** * 遍历一个数组 * @param sor ...
- java 基础排序(冒泡、插入、选择、快速)算法回顾
java 基础排序(冒泡.插入.选择.快速)算法回顾 冒泡排序 private static void bubbleSort(int[] array) { int temp; for (int i = ...
- C#冒泡排序算法
用了两种形式的数据,一个是泛型List,一个是数据int[].记录一下,作为自己学习过程中的笔记. using System; using System.Collections.Generic; us ...
- c#-冒泡排序-算法
冒泡排序(Bubble Sort) 冒泡排序算法的运作如下: 1.比较相邻的元素.如果第一个比第二个大,就交换他们两个. 2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.在这一点,最后 ...
- C# Winform 通过FlowLayoutPanel及自定义的编辑控件,实现快速构建C/S版的编辑表单页面
个人理解,开发应用程序的目的,不论是B/S或是C/S结构类型,无非就是实现可供用户进行查.增.改.删,其中查询用到最多,开发设计的场景也最为复杂,包括但不限于:表格记录查询.报表查询.导出文件查询等等 ...
- sdut 1592转置矩阵【稀疏矩阵的压缩存储】【快速转置算法】
转置矩阵 Time Limit: 1000ms Memory limit: 32768K 有疑问?点这里^_^ 题目链接:http://acm.sdut.edu.cn/sdutoj/proble ...
- java冒泡排序算法
/** * 冒泡排序算法:每次 * @author shaobn * @description 每次都会确定一个最大的值 即固定了,所以会每次-i; */ public class Test1 { p ...
随机推荐
- Python 基础篇:编码、变量、模块
1. 编码 python解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ASCII). 2. 变量 变量定义的规则: 变量名只能是 字母.数字或下划线的任意组合 变量名的第一个字符不能是数 ...
- Java基础知识学习
1.什么是Java编程语言 Java是:一种编程语言.一种开发环境.一种应用环境.一种部署环境 2.Java编程语言的主要目标 (1)提供一种解释环境为:提高开发速度.代码可移植性.使用户能运行不止一 ...
- 7.MVC框架开发(创建层级项目)
在一个项目比较大的时候,就会有多个层级项目 1)在项目中选定项目右建新建区域(新的层级项目),项目->右键->添加->区域,构成了一套独立的MVC的目录,这个目录包括Views,Co ...
- ?Swift获取手机设备信息
使用UiDevice获取设备信息: 获取设备名称 let name = UIDevice.currentDevice().name 获取设备系统名称 let systemName = UIDevice ...
- dos下的edit命令使用详解
dos下的edit命令使用详解 来源:网络 作者:未知 edit命令是一个简单的编辑软件,我们经常用它来编辑一些程序和批处理文件. 比如,我想在c盘根目录下编辑一个简单的批处理文件,要求无论当前盘和当 ...
- 各大搜索引擎的User-Agent
baidu:Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html) Google:Moz ...
- Windows Phone 8 开发环境搭建
原地址:http://blog.csdn.net/md521/article/details/11015139 Windows Phone 8将采用与Windows 8相同的NT内核,这就意味着WP8 ...
- HDU4528+BFS
/* bfs+标记状态 如何记录状态是关键!! */ #include<stdio.h> #include<string.h> #include<stdlib.h> ...
- Altium Designer学习: 原理图和PCB元件对应查找
画PCB的时候,需要经常的去查看原理图上对应的元件,元件数目少还好找,数目多了找起来就比较扯淡.还要Altium Designer提供了不错的交叉查找功能. 这里我建议使用两个显示器,一个显示器放原理 ...
- Navicat 导入导出
当我们对mysql数据库进行了误操作,造成某个数据表中的部分数据丢失时,肯定就要利用备份的数据库,对丢失部分的数据进行导出.导入操作了.Navicat工具正好给我们提供了一个数据表的导入导出功能. 1 ...