php常用四种排序算法

php常用四种排序算法

ID:20513003

大小:31.00 KB

页数:7页

时间:2018-10-13

php常用四种排序算法_第1页
php常用四种排序算法_第2页
php常用四种排序算法_第3页
php常用四种排序算法_第4页
php常用四种排序算法_第5页
资源描述:

《php常用四种排序算法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、php常用的四种排序算法纯当练习,高手请绕过。以一维数组为例。1.插入排序思想:每次将一个待排序的数据元素插入到前面已经排好序的数列中,使数列依然有序,知道待排序数据元素全部插入完为止。示例:[初始关键字][49]38659776132749J=2(38)[3849]659776132749J=3(65)[384965]9776132749J=4(97)[38496597]76132749J=5(76)[3849657697]132749J=6(13)[133849657697]2749J=7(27)[13273849657697]49J=8(49)[13273

2、84949657697]时间复杂度:如果目标是把n个元素的序列升序排列,那么采用插入排序存在最好情况和最坏情况。最好情况就是,序列已经是升序排列了,在这种情况下,需要进行的比较操作需(n-1)次即可。最坏情况就是,序列是降序排列,那么此时需要进行的比较共有n(n-1)/2次。插入排序的赋值操作是比较操作的次数加上(n-1)次。平均来说插入排序算法的时间复杂度为O(n^2)。因而,插入排序不适合对于数据量比较大的排序应用。但是,如果需要排序的数据量很小,例如,量级小于千,那么插入排序还是一个不错的选择。代码:[php]viewplaincopyfunctionin

3、sert_sort($arr){$count=count($arr);for($i=1;$i<$count;$i++){$tmp=$arr[$i];$j=$i-1;while($arr[$j]>$tmp){$arr[$j+1]=$arr[$j];$arr[$j]=$tmp;$j--;}}return$arr;}2.选择排序思想:每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。示例:[初始关键字][4938659776132749]第一趟排序后13[38659776492749]第二趟排序后132

4、7[659776493849]第三趟排序后132738[9776496549]第四趟排序后13273849[49976576]第五趟排序后1327384949[979776]第六趟排序后132738494976[7697]第七趟排序后13273849497676[97]最后排序结果1327384949767697时间复杂度:时间复杂度为o(n2),不稳定排序,适合规模比较小的代码:[php]viewplaincopy//选择排序(一维数组)functionselect_sort($arr){$count=count($arr);for($i=0;$i<$coun

5、t;$i++){$k=$i;for($j=$i+1;$j<$count;$j++){if($arr[$k]>$arr[$j])$k=$j;if($k!=$i){$tmp=$arr[$i];$arr[$i]=$arr[$k];$arr[$k]=$tmp;}}}return$arr;}3.冒泡排序思想:两两比较待排序数据元素的大小,发现两个数据元素的次序相反时即进行交换,直到没有反序的数据元素为止。示例:4913131313131313384927272727272765384938383838389765384949494949769765494949494913

6、7697656565656527277697767676764949497697979797时间复杂度:该算法的时间复杂度为O(n2)。但是,当原始关键字序列已有序时,只进行一趟比较就结束,此时时间复杂度为O(n)。代码:[php]viewplaincopy//冒泡排序(一维数组)functionbubble_sort($array){$count=count($array);if($count<=0)returnfalse;for($i=0;$i<$count;$i++){for($j=$count-1;$j>$i;$j--){if($array[$j]<$a

7、rray[$j-1]){$tmp=$array[$j];$array[$j]=$array[$j-1];$array[$j-1]=$tmp;}}}return$array;}4.快速排序思想:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。示例:初始关键字[4938659776132749]一趟排序之后[273813]49[76976549]二趟排序之后[13]27[38]49[4965]76[97]三趟排序之后

8、1327384949[6

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。