2019年1月15日10:49:52

<?php

/*
* 冒泡排序
*/ class BubbleSort {
/*
* 基础排序
*/ public static function BasicBubbleSort(array $arr) {
$length = count($arr);
//外层控制排序轮次
for ($outer = 0; $outer < $length; $outer++) {
// 和后面紧跟着的第一个数字开始一直到末尾最后一个数字,比赛大小
//内层控制每轮比较次数
for ($inner = $outer + 1; $inner < $length; $inner++) {
// 如果比后面的数字大,那么二者交换一下座位
if ($arr[$outer] > $arr[$inner]) {
$temp = $arr[$outer];
$arr[$outer] = $arr[$inner];
$arr[$inner] = $temp;
}
}
}
return $arr;
} public static function BetterBubbleSort(array $arr) {
$length = count($arr);
// 外部循环
$swap = true;
for ($outer = 0; $outer < $length && $swap; $outer++) {
$swap = false;
// 当外部循环开始第一轮的时候,从倒数第一位开始往前对比,一直到与正数第一位比较完后终止
// 当外部循环开始第一轮的时候,从倒数第一位开始往前对比,一直到与正数第二位比较完后终止
for ($inner = $length - 1; $inner > $outer; $inner--) {
if ($arr[$inner] < $arr[$inner - 1]) {
$temp = $arr[$inner];
$arr[$inner] = $arr[$inner - 1];
$arr[$inner - 1] = $temp;
$swap = true;
}
}
}
return $arr;
} /*
* 还原原有数据,冒泡排序,借助php原生函数做,如果数据里有相同元素也可以,这个才是完整还原最大元素压入队收,就像气泡一个一个往上浮
* 其实还有更简单的原生方法 sort() - 以升序对数组排序
rsort() - 以降序对数组排序
asort() - 根据值,以升序对关联数组进行排序
ksort() - 根据键,以升序对关联数组进行排序
arsort() - 根据值,以降序对关联数组进行排序
krsort()
*/ public static function BubbleSort1(array $arr) {
$array = [];
$length = count($arr);
for ($i = 0; $i < $length; $i++) {
//查出最大的元素值,也可以使用min也是一样的
$max = max($arr);
$pos = array_search($max, $arr);
array_unshift($array, $arr[$pos]);
unset($arr[$pos]);
}
return $array;
} }

最新文章

  1. C#给PDF文档添加文本和图片页眉
  2. LinuxMint 18 编译cm13.0 笔记
  3. CUDA程序设计(一)
  4. eclipse安装genymotion插件。
  5. cascade 介绍与用法 ( oracle)
  6. 前端框架layui
  7. java枚举小结
  8. oracle创建表空间、用户、用户授权、删除表空间、删除用户
  9. 性能测试之LoardRunner 手动关联一
  10. 关于web多标签多条件筛选的思考以及缓存的正确使用方法(上)
  11. MAC OS 常用软件及开发工具
  12. cocos2dx 3.2 的中国象棋游戏
  13. Java接口和抽象类的理解
  14. SpringCloud是否值得引入?
  15. webdav 概览
  16. 《MySQL技术内幕》读书笔记
  17. mysql出现ERROR1698(28000):Access denied for user root@localhost错误解决方法
  18. openCV 调用摄像头
  19. 洛谷 P1057 传球游戏 【dp】(经典)
  20. Centos 6.5(64位) vim 8.0 安装

热门文章

  1. vue中使用swiper-slide时,循环轮播失效?
  2. PHP 【五】
  3. 杨辉三角(用for循环)
  4. 在Linux中调试段错误(core dumped)
  5. SpringBoot入门基础
  6. mitmproxy,mitmdump
  7. 零基础入门微信小程序开发
  8. uni-app图片压缩转base64位 利用递归来实现多张图片压缩
  9. 迭代DOM集合的几种方法
  10. mysql运行报The server time zone value &#39;&#214;&#208;&#185;&#250;&#177;&#234;&#215;&#188;&#202;&#177;&#188;&#228;&#39; is unrecognized or represents more than one time zone的解决方法