php面试排序算法

快速查看:源码https://github.com/shihunguilai/phpapi/blob/dev/src/Algorithm/MySort.php

测试https://github.com/shihunguilai/phpapi/blob/dev/tests/Algorithm/MySortTest.php

快速排序

public static function quick_sort($arr = array(), $type = 'asc')

 {

 if (!is_array($arr)) {

 return false;

 }

 $len = count($arr);

 if ($len <= 1) {

 return $arr;

 }

 $stand = $arr[0];

 $left_arr = $right_arr = array();

 for ($i = 1; $i < $len; ++$i) {

 if (

 ($type == 'asc' && $arr[$i] <= $stand)

 ||

 ($type == 'desc' && $arr[$i] >= $stand)

 ) {

 $left_arr[] = $arr[$i];

 } else {

 $right_arr[] = $arr[$i];

 }

 }

 $left_arr = self::quick_sort($left_arr, $type);

 $right_arr = self::quick_sort($right_arr, $type);

 return array_merge($left_arr, array($stand), $right_arr);

 }

冒泡算法 优化之后的

public static function bubble_sort($arr = array(), $type = 'asc')

 {

 if (!is_array($arr)) {

 return false;

 }

 $len = count($arr);

 if ($len <= 1) {

 return $arr;

 }

 for ($i = 0; $i < $len; ++$i) {

 $is_sortable = true;

 for ($j = 0; $j < $len - $i - 1; ++$j) {

 if (

 ($type == 'asc' && $arr[$j] > $arr[$j + 1])

 ||

 ($type == 'desc' && $arr[$j] < $arr[$j + 1])

 ) {

 $tmp = $arr[$j];

 $arr[$j] = $arr[$j + 1];

 $arr[$j + 1] = $tmp;

 $is_sortable = false;

 }

 }

 if ($is_sortable) {

 break;

 }

 }

 return $arr;

 }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • afinalAfinal是一个android的ioc,orm框架 https://github.com/yangf...
    passiontim阅读 15,687评论 2 45
  • 当 在异国他乡 碰到一个人 然后是这一个人所在的那一群人 她们对你都那么好 尤其是那一个人 对你特别的好 让你感觉...
    期待说声你好阅读 1,475评论 0 0
  • 大殿门口,九幽听得牧尘的喃喃声,原本冰冷的俏脸上倒是有着一抹笑容浮现出来,道:“是挺恬噪,打死也好。” “那我努力...
    混沌天书阅读 5,084评论 0 0
  • 没有坏人,都是病人。 晓暖那里看到的一句话,越回味越有道理。细细想来,这个世界上没有十恶不赦的坏人,基于各种原因,...
    溪南客阅读 3,535评论 4 4
  • 第三章 丢下一直站着哭泣的我 天越来越凉了,这座城市随处可见的银杏树,叶子已经全部变成了金黄色,在遇到晴朗的日子,...
    遥小离阅读 3,034评论 0 0