php冒泡、选择、插入、快速、归并、sort排序代码实现及性能比较
代码语言:php
所属分类:算法
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<?php /* * php 四种排序算法的时间与内置的sort排序比较 * 3000个元素,四种算法的排序所用的时间比较 * 冒泡排序 857.98192024231ms * 选择排序 903.74493598938ms * 插入排序 296.8270778656ms * 快速排序 15.607833862305ms * sort排序 0.95200538635254ms * 归并排序 14.61386680603ms * */ /* * @param 冒泡排序 * 它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。 * 走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。 * */ function BubbleSort($arr) { $len = count($arr); //设置一个空数组 用来接收冒出来的泡 //该层循环控制 需要冒泡的轮数 for ($i = 1; $i < $len; $i++) { $flag = false; //本趟排序开始前,交换标志应为假 //该层循环用来控制每轮 冒出一个数 需要比较的次数 for ($k = 0; $k < $len - $i; $k++) { //从小到大排序 if ($arr[$k] > $arr[$k + 1]) { $tmp = $arr[$k + 1]; $arr[$k + 1] = $arr[$k]; $arr[$k] = $tmp; $flag = true; } } if (!$flag) return $arr; } } /* * @param 选择排序法 * 每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 * 选择排序是不稳定的排序方法(比如序列[5, 5, 3]第一次就将第一个[5]与[3]交换,导致第一个5挪动到第二个5后面) * */ function selectSort($array) { $temp = 0; for ($i = 0; $i < count($array) - 1; $i++) { $minVal = $array[$i]; //假设$i就是最小值 $minValIndex = $i; for ($j = $i.........完整代码请登录后点击上方下载按钮下载查看
网友评论0