快速、冒泡排序算法(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 ...
随机推荐
- 简单的map转换成Bean的工具
简单的map转换成Bean的工具 package com.sd.microMsg.util; import java.lang.reflect.Field; import java.lang.refl ...
- python的split用法
Python中没有字符类型的说法,只有字符串,这里所说的字符就是只包含一个字符的字符串!!!这里这样写的原因只是为了方便理解,仅此而已. 1. 按照某一个分隔符分割一个字符串: >>> ...
- res\menu\main.xml:6: error: No resource identifier found for attribute 'showAsAction' in package 'com.xxx.xxxx'
res\menu\main.xml:6: error: No resource identifier found for attribute 'showAsAction' in package 'co ...
- codeforces Mafia
/* * Mafia.cpp * * Created on: 2013-10-12 * Author: wangzhu */ /** * 每个人都想玩若干场,求至少需要玩几场才可以满足大家的需求. * ...
- ASP.NET MVC 入门1、简介
什么是MVC模式 MVC(Model-View-Controller,模型-视图-控制器模式)用于表示一种软件架构模式.它把软件系统分为三个基本部分:模型(Model),视图(View)和控制器(Co ...
- Asp.Net中的三种分页方式
Asp.Net中的三种分页方式 通常分页有3种方法,分别是asp.net自带的数据显示空间如GridView等自带的分页,第三方分页控件如aspnetpager,存储过程分页等. 第一种:使用Grid ...
- ANDROID_MARS学习笔记_S02_008_ANIMATION第二种使用方式:xml
一.简介 二.代码1.res\anim下的xml(1)alpha.xml.xml <?xml version="1.0" encoding="utf-8" ...
- 【Linux远程管理】SSH协议远程管理
SSH(Secure Shell)协议.命令行界面(CLI)下的远程管理工具,几乎所有的操作系统都有,区别于Telnet,SSH在进行数据传送时会对数据进行加密,所以SSH是比较安全的协议.几乎所有的 ...
- 《深入理解linux内核》第二章 内存寻址
三种不同的内存地址 逻辑地址(logical address)包含在linux实际指令中的地址,即分段式地址,是对应的硬件平台段式管理转换前地址由16位的段选择符(segment selector)和 ...
- perl + 匹配前导模式一次或者多次
Vsftp:/data01/mysqllog/binlog# cat a2.pl $_="aaaa@[2]sasas"; if ($_ =~/.*?(\@\[[0-9]+\]).* ...