插入数字排序问题

简介:

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. ?> 

      本文转自yifangyou 51CTO博客,原文链接:http://blog.51cto.com/yifangyou/618822,如需转载请自行联系原作者



相关文章
|
6天前
|
人工智能 运维 安全
|
4天前
|
人工智能 异构计算
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
|
5天前
|
机器学习/深度学习 人工智能 自然语言处理
B站开源IndexTTS2,用极致表现力颠覆听觉体验
在语音合成技术不断演进的背景下,早期版本的IndexTTS虽然在多场景应用中展现出良好的表现,但在情感表达的细腻度与时长控制的精准性方面仍存在提升空间。为了解决这些问题,并进一步推动零样本语音合成在实际场景中的落地能力,B站语音团队对模型架构与训练策略进行了深度优化,推出了全新一代语音合成模型——IndexTTS2 。
503 14
|
11天前
|
人工智能 JavaScript 测试技术
Qwen3-Coder入门教程|10分钟搞定安装配置
Qwen3-Coder 挑战赛简介:无论你是编程小白还是办公达人,都能通过本教程快速上手 Qwen-Code CLI,利用 AI 轻松实现代码编写、文档处理等任务。内容涵盖 API 配置、CLI 安装及多种实用案例,助你提升效率,体验智能编码的乐趣。
875 109
|
4天前
|
人工智能 测试技术 API
智能体(AI Agent)搭建全攻略:从概念到实践的终极指南
在人工智能浪潮中,智能体(AI Agent)正成为变革性技术。它们具备自主决策、环境感知、任务执行等能力,广泛应用于日常任务与商业流程。本文详解智能体概念、架构及七步搭建指南,助你打造专属智能体,迎接智能自动化新时代。