[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

【练习-014】出给新手的数值排序加分题

出题目的:
        掌握任意数列之间的排序技巧
解题要求:
        代码通用、高效
        尽量简洁
        尽量不生成临时文件
加分规则:
        1 思路独特基准分5分
        2 代码高效、通用基准分4分
        3 技巧高超基准分3分
        4 代码简洁基准分2分
        5 完美代码加分15分
题目如下:
        给出任意一组数列,正序输出,如:
        3 2008 11 19 777 23 2014 453 789 51
        输出为:3 11 19 23 51 453 777 789 2008 2014
说明:
        不必考虑特大数,所给的数列中都是整数值。
心绪平和,眼藏静谧。

terse前辈,应该把这题留给新人做。^_^
心绪平和,眼藏静谧。

TOP

回复 9楼 的帖子

echo !str[%%i]:~-4! 这里出现了问题,如果是个5位数呢。
测试如下:
for /l %%a in (1 1 10) do set "var=!var!!random! "
for %%i in (%var%) do (
.......
......
你的代码就会出错了。还能再精简,也用不到临时文件。

[ 本帖最后由 pusofalse 于 2008-8-21 16:26 编辑 ]
心绪平和,眼藏静谧。

TOP

sort 1.txt无异于
(echo   123&echo 12345&echo    23)|sort
心绪平和,眼藏静谧。

TOP

只需把9楼的代码稍作调整即可。
  1. @echo off
  2. setlocal EnableDelayedExpansion
  3. for /l %%a in (1 1 10) do set "var=!var!!random! "
  4. echo %var%%
  5. for %%i in (%var%) do (
  6. set "str=   %%i"
  7. set "echo=!echo!echo !str:~-5!&"
  8. )
  9. (%echo:~,-1%)|sort
  10. pause>nul
复制代码

[ 本帖最后由 pusofalse 于 2008-8-22 15:03 编辑 ]
心绪平和,眼藏静谧。

TOP

返回列表