Maison  >  Article  >  développement back-end  >  Explication détaillée de deux exemples d'algorithmes de tri rapide en PHP

Explication détaillée de deux exemples d'algorithmes de tri rapide en PHP

怪我咯
怪我咯original
2017-07-04 14:56:241100parcourir

Cet article présente principalement deux exemples d'algorithmes de tri rapide en PHP. Cet article donne directement le code d'implémentation, qui est implémenté en utilisant respectivement la méthode récursive et la méthode itérative. 🎜>

Bien que dans le développement d'applications Web telles que PHP, nous n'insistons pas trop sur l'importance du tri, car PHP lui-même est déjà doté de puissantes fonctions de tri telles que sort(), mais dans certaines occasions importantes, comme certaines hautes fonctions de tri. -concurrency Dans ce cas, je pense que l'impact de l'algorithme de tri ne peut être ignoré. Nous introduisons donc ici le tri récursif et le tri itératif.

Méthode récursive :

/**
* 递归法实现的快速排序
*/
function quicksort($seq)
{
    $k = $seq[0];
    $x = array();
    $y = array();
    for($i=1; $i< $_size; $i++) {
      if($seq[$i] <= $k) {
        $x[] = $seq[$i];
      } else {
        $y[] = $seq[$i];
      }
    }
    $x = quicksort($x);
    $y = quicksort($y);
    return array_merge($x, array($k), $y);
  } else {
    return $seq;
  }
}


Méthode itérative :


/**
* 迭代法的快速排序
*/
function quicksortx(&$seq)
{
  $stack = array($seq);
  $sort = array();
  while ($stack) {
    $arr = array_pop($stack);
    if(count($arr) <= 1) {
      if(count($arr) == 1) {
        $sort[] = &$arr[0];
      }
      continue;
    }
    $k = $arr[0];
    $x = array();
    $y = array();
    $_size = count($arr);
    for($i =1 ;$i < $_size; $i++) {
      if($arr[$i] <= $k) {
        $x[] = &$arr[$i];
      } else {
        $y[] = &$arr[$i];
      }
    }
    !empty($y) && array_push($stack, $y);
    array_push($stack, array($arr[0]));
    !empty($x) && array_push($stack, $x);
  }
  return $sort;
}

Utilisation :

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn