Php quick sorting algorithm
- Function qsort (& $ arr)
- {
- _ Quick_sort ($ arr, 0, count ($ arr)-1 );
- }
- /**
- * Uses recursive algorithms for fast sorting.
- *
- * @ Param array $ array to be sorted by arr
- * @ Param int $ low: Lowest sort sub-segment
- * @ Param int $ highest sorting field
- */
- 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