1:要求在一组数中,插入一个新数,并维护原来的排序方式不变

我的代码如下:

 

  1. <?php  
  2. /*  
  3. *1:要求在一组数中,插入一个新数,并维护原来的排序方式不变  
  4. *系统环境:windows/linux  
  5. *编译环境:php4/php5  
  6. *输入参数:存放在in.txt,多个参数时空格分隔  
  7.                     参数1是一组数字,中间用逗号分割,按照数字升序或者降序排列  
  8.                     参数2是一个数字  
  9.                     例如格式:1,3,4,7,8 5  
  10.     输出:out.txt  
  11. */ 
  12.  
  13. $params=getParams(2);  
  14. //排序默认为升序,-1表示未知,true表示升序,false 表降序  
  15. $isOrderAsc=-1;  
  16. $argv0=trim(trim($params[0]),",");  
  17. $argv1=trim($params[1]);  
  18. //检查参数1  
  19. if(!preg_match_all("/^((\d+),?)+$/i"$argv0,$matches))  
  20. {  
  21.     error_msg("params 1 must is group of numbers,break with ;");  
  22. }  
  23. //检查参数2  
  24. if(!is_numeric($argv1))  
  25. {  
  26.     error_msg("params 2 must be a numbers");  
  27. }  
  28. //把参数1转为数组  
  29. $numbers=split(",",trim($argv0","));  
  30. $tmp_numbers=$numbers;  
  31. //判断是不是升序  
  32. if(sort($tmp_numbers,SORT_NUMERIC) && $tmp_numbers===$numbers)  
  33. {  
  34.     $isOrderAsc=true;  
  35. }else if(rsort($tmp_numbers,SORT_NUMERIC) && $tmp_numbers===$numbers)  
  36. {  
  37.     //判断是不是降序  
  38.     $isOrderAsc=false;  
  39. }  
  40. if($isOrderAsc===-1)  
  41. {  
  42.     error_msg("params 1 must order by asc or desc");  
  43. }  
  44. array_push($numbers,$argv1);  
  45. if($isOrderAsc)  
  46. {  
  47.     sort($numbers,SORT_NUMERIC);  
  48. }else{  
  49.     rsort($numbers,SORT_NUMERIC);  
  50. }  
  51. //输出结果  
  52. output(join(",",$numbers),true);  
  53. error_msg("execute success");  
  54. /*  
  55.     从in.txt里读取参数  
  56. */ 
  57. function getParams($paramNum)  
  58. {  
  59.     $in=file_get_contents("in.txt");  
  60.     if($in===FALSE){  
  61.         error_msg("cannot read in.txt,please check in.txt exists\n");     
  62.     }  
  63.     $in=preg_replace("/(\s+)/i"" "$in);  
  64.     //多个参数时,按照空格分隔  
  65.     $parms=split(" ",trim($in));  
  66.     if($parms===FALSE)  
  67.     {  
  68.         error_msg("cannot get param from in.txt\n");  
  69.     }  
  70.     if(count($parms) < $paramNum)  
  71.     {  
  72.         error_msg("it needs $paramNum params\n");  
  73.     }  
  74.     return $parms;  
  75. }  
  76.  
  77. /*  
  78.     把结果输出到输出文件里  
  79.     当isClean=true时清空out.txt  
  80. */ 
  81. function output($msg,$isClean=false)  
  82. {  
  83.     if($isClean)  
  84.     {  
  85.     $handle = fopen('out.txt''w');  
  86.     fclose($handle);      
  87.     }  
  88.     error_log($msg."\n", 3, "out.txt");  
  89. }  
  90.  
  91. function error_msg($msg,$is_Exit=true)  
  92. {  
  93.     if($is_Exit)  
  94.         exit($msg."\n");  
  95.     else 
  96.         echo $msg."\n";  
  97. }  
  98. ?>