php 冒泡排序 快速排序
$a=array('3','8','1','4','11','7');
print_r($a);
$len = count($a);
//从小到大
for($i=1;$i<$len;$i++)
{
for($j=$len-1;$j>=$i;$j--)
if($a[$j]<$a[$j-1])
{//如果是从大到小的话,只要在这里的判断改成if($b[$j]>$b[$j-1])就可以了
$x=$a[$j];
$a[$j]=$a[$j-1];
$a[$j-1]=$x;
}
}
print_r($a);j
//另一种方法 从小到大
$b=array('4','3','8','9','2','1');
$len=count($b);
for($k=1;$k<$len;$k++)
{
for($j=$len-1,$i=0;$i<$len-$k;$i++,$j--)
if($b[$j]<$b[$j-1]){
//如果是从大到小的话,只要在这里的判断改成if($b[$j]>$b[$j-1])就可以了
$tmp=$b[$j];
$b[$j]=$b[$j-1];
$b[$j-1]=$tmp;
}
print_r($b);
echo "
";
}
//下面的这个执行效率更高
function maopao($arr)
{
$len = count($arr);
for($i=1; $i<$len;
$i++)//最多做n-1趟排序
{
$flag =
false; //本趟排序开始前,交换标志应为假
for($j=$len-1;$j>=$i;$j--)
{
if($arr[$j]<$arr[$j-1])//交换记录
{//如果是从大到小的话,只要在这里的判断改成if($arr[$j]>$arr[$j-1])就可以了
$x=$arr[$j];
$arr[$j]=$arr[$j-1];
$arr[$j-1]=$x;
$flag
= true;//发生了交换,故将交换标志置为真
}
}
if(!
$flag)//本趟排序未发生交换,提前终止算法
return
$arr;
}
}
$shuz = array('2','4','1','8','5');
$bb = maopao($shuz);
print_r($bb);
// 快速排序
function kuaisu($arr){
$len
= count($arr);
if($len
<= 1){
return
$arr;
}
$key
= $arr[0];
$left_arr
= array();
$right_arr
= array();
for($i=1;
$i<$len;$i++){
if($arr[$i]
<= $key){
$left_arr[]
= $arr[$i];
}else{
$right_arr[]
= $arr[$i];
}
}
$left_arr
= kuaisu($left_arr);
$right_arr
= kuaisu($right_arr);
return
array_merge($left_arr, array($key), $right_arr);
}
$arr = array(23,98,54,2,9,62,34);
print_r(kuaisu($arr));
php 冒泡排序 快速排序的更多相关文章
- 冒泡排序&快速排序
1.排序分为以下四类共七种排序方法: 交换排序: 1) 冒泡排序 2) 快速排序 选择排序: 3) 直接选择排序 4) 堆排序 插入排序: 5) 直接插入排序 6) 希尔排序 合并排序: 7) ...
- 数组排序代码,冒泡排序&快速排序&选择排序
冒泡排序: for(var i=0;i<arr.length-1;i++){ for(var j=0;j<arr.length-1-i;j++){ if(arr[j]>arr[j+1 ...
- 9, java数据结构和算法: 直接插入排序, 希尔排序, 简单选择排序, 堆排序, 冒泡排序,快速排序, 归并排序, 基数排序的分析和代码实现
内部排序: 就是使用内存空间来排序 外部排序: 就是数据量很大,需要借助外部存储(文件)来排序. 直接上代码: package com.lvcai; public class Sort { publi ...
- 几种常见排序算法之Java实现(插入排序、希尔排序、冒泡排序、快速排序、选择排序、归并排序)
排序(Sorting) 是计算机程序设计中的一种重要操作,它的功能是将一个数据元素(或记录)的任意序列,重新排列成一个关键字有序的序列. 稳定度(稳定性)一个排序算法是稳定的,就是当有两个相等记录的关 ...
- 关于冒泡排序的Java代码实现
一.排序算法的历史: 排序算法的发展历史几乎和计算机的发展历史一样悠久,而且直到今天,世界范围内依然有计算机科学家正在研究着排序的算法,由此可见排序算法的强大魅力. 我们现在介绍的排序算法都是前任 ...
- python排序算法-冒泡和快速排序,解答阿里面试题
''常见的排序算法\ 插入排序/希尔排序/直接排序/堆排序 冒泡排序/快速排序/归序排序/基数排序 给定一个列表,将这个列表进行排序,要求:> 时间复杂度要小于O(n^2) 复杂度:1.时间复杂 ...
- iOS面试题 -总结 ,你的基础扎实吗?
1.#import和#include的区别,@class代表什么? (1)#import指令是Object-C针对#include的改进版本,#import确保引用的文件只会被引用一次,这样你就不会陷 ...
- iOS 面试题搜集
1.#import和#include的区别,@class代表什么? 2.浅拷贝和深拷贝区别是什么? 3.Objective-C中类别和类扩展的区别? 4.Objective-C堆和栈的区别? 5.内存 ...
- 关于成为Java高级工程师之路
简单说明一下现状,个人目前学习使用java已经一年半,很迷茫,高不成低不就,在此列一个目标,为期18个月,再来个一年半,这样软件生涯三年后,我必须成为高级工程师! 这里涉及Java各个方面的知识,有的 ...
随机推荐
- #MySQL 5.7.8 支持Json类型
As of MySQL 5.7.8, MySQL supports a native JSON data type that enables efficient access to data in J ...
- 在WildFly中运行多个standalone模式的实例
WildFly作为一款优秀的EJB容器,其前身为JBoss AS.JBoss作为一款开源的应用服务器,被广泛的应用在各种项目当中.假设我们现在有这样一个项目,他是以standalone的模式运行在 ...
- <<< html编码中js和html编码不一致导致乱码
在html中,有时把编码设置成UTF-8之后,引入js,页面不会有乱码,但是有关js的东西会出现乱码, 大概问题就是js默认编码不是UTF-8, 解决办法:将js文件用记事本打开,在另存为,保存的时候 ...
- HTML-如何让自己的网页标题处可以显示网站的logo?
<link rel="Bookmark" href="/forum_images/ffico.png" /> <link rel=" ...
- 自然语言27_Converting words to Features with NLTK
https://www.pythonprogramming.net/words-as-features-nltk-tutorial/ Converting words to Features with ...
- centos7安装activemq
activemq下载地址,http://activemq.apache.org/download.html,下载后解压,进入bin,直接运行 activemq start bin/activemq s ...
- 原生JavaScript技巧
时常在技术论坛有看见一些比较好的示例,于是就出于一种收集并学习的态度,于是就保留下来啦~ 当然现在展示的也只是一部分,先放一部分出来尝尝鲜~~~
- 【Alpha版本】冲刺-Day1
队伍:606notconnected 会议时间:11月9日 会议总结 张斯巍(433) 今天安排:设计登陆界面背景,图标的大小规定 完成度:90% 明天计划:主界面图标的修改,侧边栏背景设计,个人信息 ...
- Apache Rewrite匹配问号的问题
在写RewriteRule准备匹配url中的问号及后面的参数时,怎么弄都无法成功.正则的写法经过测试是正确的,问号也已经转义\?,可还是不行. 百度查询了下,RewriteRule 不会去匹配问号?后 ...
- iterator接口
Iterator用来做遍历,所有实现Collection接口的容器都有一个Iterator的方法以返回一个Iterator接口的对象