博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP实现排序算法
阅读量:6330 次
发布时间:2019-06-22

本文共 712 字,大约阅读时间需要 2 分钟。

hot3.png

一、冒泡排序

大O符号:order,译为阶,也可以理解为数量级。

冒泡排序原理步骤

  1. 每一轮排序找到最大的值,放在数组的最后,并且,排好序的数不再参与下一轮的排序;

  2. 每一轮的排序规则是:每次从第一个数开始,与其右边的数进行比较,大的值放到右边,右边的值再依次往下进行比较,直到进行到未排序数的最后一个数为止;

  3. 排序的结束:当未排序的数只有一个时,就完成了排序。

冒泡排序伪代码

数组长度:lengthfunction bubble_sort(&$a){    $i从0到length-1      $j从0到length-1-$i     //$i表示经过$i次循环后已排好序的个数,length-1-$i表示对未排序的数进行排序          //对$a[$j]和$a[$j+1]排序    //随着$j递增,较大的数参与下一次排序,直到比较到最后一个未排序数          如果$a[$j]>$a[$j+1],交换两数值

代码实现

 $a[$j+1])                swap($a[$j],$a[$j+1];}$arr = array(4,8,1,9,3,7,6,2);bubble_sort($arr);print_r($arr);

排序次数

冒泡排序是与插入排序拥有相等的运行时间,但是两种算法在需要的交换次数却很大地不同。在最好的情况,冒泡排序需要O(n^2)次交换,而插入排序只要最多O(n)交换。

特点

最易理解,实现最简单,但是对于少数元素之外的数列排序是很没有效率的。

参考:

转载于:https://my.oschina.net/u/2490061/blog/619978

你可能感兴趣的文章
路径工程OpenCV依赖文件路径自动添加方法
查看>>
玩转SSRS第七篇---报表订阅
查看>>
WinCE API
查看>>
POJ 3280 Cheapest Palindrome(DP 回文变形)
查看>>
oracle修改内存使用和性能调节,SGA
查看>>
SQL语言基础
查看>>
对事件处理的错误使用
查看>>
最大熵模型(二)朗格朗日函数
查看>>
深入了解setInterval方法
查看>>
html img Src base64 图片显示
查看>>
[Spring学习笔记 7 ] Spring中的数据库支持 RowMapper,JdbcDaoSupport 和 事务处理Transaction...
查看>>
FFMPEG中关于ts流的时长估计的实现(转)
查看>>
Java第三次作业
查看>>
【HDOJ 3652】B-number
查看>>
android代码混淆笔记
查看>>
Codeforces Round #423 (Div. 2, rated, based on VK Cup Finals) C. String Reconstruction 并查集
查看>>
BMP文件的读取与显示
查看>>
Flash文字效果
查看>>
各种排序算法总结篇(高速/堆/希尔/归并)
查看>>
使用c#訪问Access数据库时,提示找不到可安装的 ISAM
查看>>