Heim  >  Artikel  >  Backend-Entwicklung  >  PHP快速排序小例子 php快速排序实现方法

PHP快速排序小例子 php快速排序实现方法

WBOY
WBOYOriginal
2016-07-25 09:11:531033Durchsuche

PHP快速排序小例子 php快速排序实现方法

完整代码:

  1. set_time_limit(0);
  2. function quickSort($arr) {
  3. if (count($arr) > 1) { // 只判断数组长度大于1的情况
  4. $k = $arr[0]; // 默认参照对象为数组第一个对象
  5. $x = array(); // 比参照小的
  6. $y = array(); // 比参照大的
  7. $_size = count($arr);
  8. for ($i = 1; $i if ($arr[$i] $x[] = $arr[$i];
  9. } else {
  10. $y[] = $arr[$i];
  11. }
  12. }
  13. // 分别对两侧数组进行递归排列
  14. $x = quickSort($x);
  15. $y = quickSort($y);
  16. return array_merge($x, array($k), $y);
  17. } else {
  18. return $arr;
  19. }
  20. }
  21. $test_array = array();
  22. $n = 0;
  23. //测试一个30万条的记录
  24. while(++$n $test_array[$n] = $n;
  25. }
  26. echo 'Array init!
    ';
  27. shuffle($test_array); // 打乱顺序
  28. echo 'Array shuffled
    ';
  29. echo date( 'Y-m-d H:m:s').'
    ';
  30. $res = quickSort($test_array);
  31. echo date('Y-m-d H:m:s');
  32. ?>
复制代码

快速排序思想: 1)、将目标数组分成两个数组,默认以首元素为基准; 2)、如果比参照对象小则分配到Left数组,否则分配到Right; 3)、依照此方法分配知道数组中只有一个元素为止。



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