PHP 빠른 정렬 알고리즘

WBOY
풀어 주다: 2016-07-25 08:43:06
원래의
986명이 탐색했습니다.
  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 < $high)
  18. {
  19. while ($arr[$high] >= $low_data && $low < $high) {
  20. $high--;
  21. }
  22. if ($low < $high) {
  23. $arr[$low] = $arr[$high];
  24. $low ;
  25. }
  26. while ($arr[$low] <= $low_data && $low < $high) {
  27. $low ;
  28. }
  29. if ($low < $high) {
  30. $arr[$high] = $arr[$low];
  31. $high--;
  32. }
  33. }
  34. $arr[$low] = $low_data;
  35. if ($prev_low < $low) {
  36. _quick_sort($arr, $prev_low, $low);
  37. }
  38. if ($low 1 < $prev_high) {
  39. _quick_sort($arr, $low 1, $prev_high);
  40. }
  41. }
  42. function quick_sort(&$arr)
  43. {
  44. $stack = array();
  45. array_push($stack, 0);
  46. array_push($stack, count($arr) -1);
  47. while (!empty($stack)) {
  48. $high = array_pop($stack);
  49. $low = array_pop($stack);
  50. $low_data = $arr[$low];
  51. $prev_low = $low;
  52. $prev_high = $high;
  53. while ($low < $high)
  54. {
  55. while ($arr[$high] >= $low_data && $low < $high) {
  56. $high--;
  57. }
  58. if ($low < $high) {
  59. $arr[$low] = $arr[$high];
  60. $low ;
  61. }
  62. while ($arr[$low] <= $low_data && $low < $high) {
  63. $low ;
  64. }
  65. if ($low < $high) {
  66. $arr[$high] = $arr[$low];
  67. $high--;
  68. }
  69. }
  70. $arr[$low] = $low_data;
  71. if ($prev_low < $low) {
  72. array_push($stack, $prev_low);
  73. array_push($stack, $low);
  74. }
  75. if ($low 1 < $prev_high) {
  76. array_push($stack, $low 1);
  77. array_push($stack, $prev_high);
  78. }
  79. }
  80. }
复制代码

PHP


관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿