Maison >développement back-end >tutoriel php >Tri rapide implémenté par la méthode de récursion PHP

Tri rapide implémenté par la méthode de récursion PHP

墨辰丷
墨辰丷original
2018-06-13 11:54:063140parcourir

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é respectivement en utilisant la méthode récursive et la méthode itérative. Les amis dans le besoin peuvent s'y référer

. Bien qu'en PHP, dans le développement d'applications Web, nous n'accordons pas trop d'importance au tri, car PHP lui-même est déjà livré avec de puissantes fonctions de tri telles que sort(). Cependant, dans certaines occasions importantes, comme certaines hautes concurrences. À certaines occasions, j'aimerais utiliser des algorithmes de tri. L'impact 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 :

/**
*产生一个随机数组
*/
for($i=0;$i<5;$i++){
  $testArr[]=mt_rand(0,100);
}
var_dump($testArr);
var_dump(quicksort($testArr));

var_dump(quicksortx($testArr));

Résumé : Ce qui précède est l'intégralité du contenu de cet article, j'espère qu'il sera utile à l'étude de chacun.

Recommandations associées :

Implémentation PHP des méthodes de téléchargement d'images côté client et côté serveur

Implémentation de code PHP pour contrôler le téléchargement de fichiers speed

php utilise un tableau pour remplir la zone de liste déroulante

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