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

[数值计算] 批处理怎样实现数字从大到小排序?

set var=任意个随机数字
比如
set var=2 5 3 4 1
然后将var从大到小排序

1位数字列:
  1. @echo off&setlocal enabledelayedexpansion
  2. set var=2 5 3 4 1
  3. for %%a in (%var%) do set $%%a==
  4. for /f "delims=$=" %%a in ('set $') do set v=%%a !v!
  5. set var=%v:~0,-1%
  6. echo.从大到小:%var%
  7. pause
复制代码
有效数字列:
  1. @echo off&setlocal enabledelayedexpansion
  2. set var=2912 5 283 45 319
  3. for %%a in (%var%) do set r=         %%a&set $!r:~-10!==
  4. for /f "delims==$" %%a in ('set $') do for %%b in (%%a) do set v=%%b !v!
  5. set var=%v:~0,-1%
  6. echo.从大到小:%var%
  7. pause
复制代码

[ 本帖最后由 hanyeguxing 于 2010-5-26 01:01 编辑 ]
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

  1. @echo off
  2. set var=2 5 3 4 1
  3. for %%a in (%var%) do echo %%a>>$
  4. sort /r $
  5. pause
  6. del $
复制代码

[ 本帖最后由 sgaizxt001 于 2010-5-26 00:27 编辑 ]
努力学习,努力挣分

TOP

从大到小排序后
将变量var设置为5 4 3 2 1

TOP

2楼的代码不是用显示%var%来输出5 4 3 2 1的吗?
努力学习,努力挣分

TOP

冒泡
  1. @echo off&setlocal enabledelayedexpansion
  2. set n=100
  3. for /l %%i in (1 1 !n!) do set a%%i=!random!
  4.     set /a c=n-1
  5.        for /l %%i in (1,1,!c!) do (
  6.           set /a b=%%i+1
  7.           for /l %%j in (!b!,1,!n!) do (
  8.           if !a%%i! lss !a%%j! set/a a%%j=!a%%i!,a%%i=!a%%j!
  9.        )
  10.     )
  11. for /l %%i in (1,1,!n!) do set "str=!str! !a%%i!"
  12. echo!str!
  13. )
  14. pause
复制代码

TOP

返回列表