Heim >Backend-Entwicklung >PHP-Tutorial >php快速排序的算法

php快速排序的算法

WBOY
WBOYOriginal
2016-07-25 08:43:061014Durchsuche
  1. function qsort(&$arr)
  2. {
  3. _quick_sort($arr, 0, count($arr) - 1);
  4. }
  5. /**
  6. * 采用递归算法的快速排序。
  7. *
  8. * @param array $arr 要排序的数组
  9. * @param int $low 最低的排序子段
  10. * @param int $high 最高的排序字段
  11. */
  12. function _quick_sort(&$arr, $low, $high)
  13. {
  14. $low_data = $arr[$low];
  15. $prev_low = $low;
  16. $prev_high = $high;
  17. while ($low {
  18. while ($arr[$high] >= $low_data && $low $high--;
  19. }
  20. if ($low $arr[$low] = $arr[$high];
  21. $low++;
  22. }
  23. while ($arr[$low] $low++;
  24. }
  25. if ($low $arr[$high] = $arr[$low];
  26. $high--;
  27. }
  28. }
  29. $arr[$low] = $low_data;
  30. if ($prev_low _quick_sort($arr, $prev_low, $low);
  31. }
  32. if ($low + 1 _quick_sort($arr, $low + 1, $prev_high);
  33. }
  34. }
  35. function quick_sort(&$arr)
  36. {
  37. $stack = array();
  38. array_push($stack, 0);
  39. array_push($stack, count($arr) -1);
  40. while (!empty($stack)) {
  41. $high = array_pop($stack);
  42. $low = array_pop($stack);
  43. $low_data = $arr[$low];
  44. $prev_low = $low;
  45. $prev_high = $high;
  46. while ($low {
  47. while ($arr[$high] >= $low_data && $low $high--;
  48. }
  49. if ($low $arr[$low] = $arr[$high];
  50. $low++;
  51. }
  52. while ($arr[$low] $low++;
  53. }
  54. if ($low $arr[$high] = $arr[$low];
  55. $high--;
  56. }
  57. }
  58. $arr[$low] = $low_data;
  59. if ($prev_low array_push($stack, $prev_low);
  60. array_push($stack, $low);
  61. }
  62. if ($low + 1 array_push($stack, $low + 1);
  63. array_push($stack, $prev_high);
  64. }
  65. }
  66. }
复制代码

php


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn