php 快速排序的算法用法
内容摘要
这篇文章主要为大家详细介绍了php 快速排序的算法用法,具有一定的参考价值,可以用来参考一下。
php快速排序的算法,对此感兴趣的朋友,看看idc笔记做的技术笔记。经测试代码如下
php快速排序的算法,对此感兴趣的朋友,看看idc笔记做的技术笔记。经测试代码如下
文章正文
这篇文章主要为大家详细介绍了php 快速排序的算法用法,具有一定的参考价值,可以用来参考一下。
php快速排序的算法,对此感兴趣的朋友,看看idc笔记做的技术笔记。经测试代码如下:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 | <code class = "php" > /** * 快速排序的算法 * * @param * @author php教程 www.idcnote.com **/ function qsort(& $arr ) { _quick_sort( $arr , 0, count ( $arr ) - 1); } /** * 采用递归算法的快速排序。 * * @param array $arr 要排序的数组 * @param int $low 最低的排序子段 * @param int $high 最高的排序字段 */ function _quick_sort(& $arr , $low , $high ) { $low_data = $arr [ $low ]; $prev_low = $low ; $prev_high = $high ; while ( $low < $high ) { while ( $arr [ $high ] >= $low_data && $low < $high ) { $high --; } if ( $low < $high ) { $arr [ $low ] = $arr [ $high ]; $low ++; } while ( $arr [ $low ] <= $low_data && $low < $high ) { $low ++; } if ( $low < $high ) { $arr [ $high ] = $arr [ $low ]; $high --; } } $arr [ $low ] = $low_data ; if ( $prev_low < $low ) { _quick_sort( $arr , $prev_low , $low ); } if ( $low + 1 < $prev_high ) { _quick_sort( $arr , $low + 1, $prev_high ); } } function quick_sort(& $arr ) { $stack = array (); array_push ( $stack , 0); array_push ( $stack , count ( $arr ) -1); while (! empty ( $stack )) { $high = array_pop ( $stack ); $low = array_pop ( $stack ); $low_data = $arr [ $low ]; $prev_low = $low ; $prev_high = $high ; while ( $low < $high ) { while ( $arr [ $high ] >= $low_data && $low < $high ) { $high --; } if ( $low < $high ) { $arr [ $low ] = $arr [ $high ]; $low ++; } while ( $arr [ $low ] <= $low_data && $low < $high ) { $low ++; } if ( $low < $high ) { $arr [ $high ] = $arr [ $low ]; $high --; } } $arr [ $low ] = $low_data ; if ( $prev_low < $low ) { array_push ( $stack , $prev_low ); array_push ( $stack , $low ); } if ( $low + 1 < $prev_high ) { array_push ( $stack , $low + 1); array_push ( $stack , $prev_high ); } } } /*** 来自php教程(www.idcnote.com) ***/ </code> |
注:关于php 快速排序的算法用法的内容就先介绍到这里,更多相关文章的可以留意
代码注释