php 两表合并成新表并且有序排列

  1. <?php
  2. /**
  3. la (3,5,8,11)
  4. lb(2,6,8,9,11,15)
  5. 合并为lc,有序排列。
  6. 用php实现,不能用sort之类的函数!!!!
  7. **/
  8. class union {
  9. var $lista = array();
  10. var $listb = array();
  11. var $listc = array();
  12. function getlenght($arr) { //获得表长度
  13. return count($arr);
  14. }
  15. function getelement($arr, $n) { //获取表中第n个元素,返回
  16. return $e = $arr[$n] ? $arr[$n] : '';
  17. }
  18. function listinsert($arr, $e) { //表末尾插入元素
  19. $arr[] = $e;
  20. return $arr;
  21. }
  22. }
  23. $phpig = new union();
  24. $lista = $phpig->lista = array(3, 5, 8, 11);
  25. $listb = $phpig->listb = array(2, 6, 8, 9, 11, 15);
  26. $listc = $phpig->listc;
  27. $lena = $phpig->getlenght($lista); //取得表大小
  28. $lenb = $phpig->getlenght($listb);
  29. $i = $j = 0;
  30. while($i < $lena && $j < $lenb) {
  31. $ea = $phpig->getelement($lista, $i);
  32. $eb = $phpig->getelement($listb, $j);
  33. if($ea <= $eb) {
  34. $listc = $phpig->listinsert($listc, $ea);
  35. ++$i;
  36. } else {
  37. $listc = $phpig->listinsert($listc, $eb);
  38. ++$j;
  39. }
  40. }
  41. while($i < $lena) {
  42. $ea = $phpig->getelement($lista, $i);
  43. $listc = $phpig->listinsert($listc, $ea);
  44. ++$i;
  45. }//开源代码phpfensi.com
  46. while($j < $lenb) {
  47. $eb = $phpig->getelement($listb, $j);
  48. $listc = $phpig->listinsert($listc, $eb);
  49. ++$j;
  50. }
  51. print_r($listc);
  52. ?>