[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
第二个不好 不满足 不能换数字的位置 只能删
第一个也一样不行
例如 改一下
set "str=1 2 55 3 4 5 6 7 8 10 9"
他的输出居然是
1 2 3 4 5 6 7 8 9 10
输入的10可是在9前面的.........还得再想想
o(∩_∩)o...~~~
空间:http://hi.baidu.com/fair_jm
喜欢批处理的没事的话去逛逛哦~~

TOP

前面排序都一样 后面判断稍不同
  1. @echo off&setlocal enabledelayedexpansion
  2. set "str=1 2 55 3 4 5 1 7 8 9"
  3. for %%i in (!str!) do (
  4.     if not defined .%%i (
  5.        set /a n+=1
  6.        set "_!n!=%%i"&set .%%i=a
  7.   ))
  8.          set /a m=n-1
  9.          for /l %%i in (1,1,!m!) do (
  10.          set /a e=%%i+1
  11.          for /l %%j in (!e!,1,!n!) do (
  12.          if !_%%i! gtr !_%%j! set/a _%%j=!_%%i!,_%%i=!_%%j!
  13.         )
  14.      )
  15.     for /l %%i in (1,1,!n!) do (
  16.     if !s1! equ !_%%i! (
  17.     set/a s1-=1
  18.     if defined ..!s1! (set var=!var! !_%%i!)else set var=!var! !s1! !_%%i!
  19.     set ..!_%%i!=.
  20.    )
  21.     set/a s1=_%%i+1
  22. )
  23. echo!var!
  24. pause
复制代码
  1. @echo off&setlocal enabledelayedexpansion
  2. set "str=2 2 12 3 4 5 11 7 8 9"
  3. for %%i in (!str!) do (
  4.     if not defined .%%i (
  5.        set /a n+=1
  6.        set "_!n!=%%i"&set .%%i=a
  7.   ))
  8.          set /a m=n-1
  9.          for /l %%i in (1,1,!m!) do (
  10.          set /a e=%%i+1
  11.          for /l %%j in (!e!,1,!n!) do (
  12.          if !_%%i! gtr !_%%j! set/a _%%j=!_%%i!,_%%i=!_%%j!
  13.         )
  14.      )
  15.     for /l %%i in (1,1,!n!) do (
  16.     if not defined a1 (set/a a1=_%%i,m=1)else (
  17.     set/a "an=a1+m-1"
  18.     if !an! equ !_%%i! (
  19.     if !m! equ 2 (set var=!var! !a1! !an!) else set var=!var! !an!
  20.   ) else set/a a1=_%%i,m=1
  21. )
  22. set /a m+=1
  23. )
  24. echo!var!
  25. pause
复制代码

[ 本帖最后由 terse 于 2009-10-2 13:23 编辑 ]

TOP

但这样怎么实现呢
因为排序后位置都改变了 怎么能知道要删除去的是那个数呢?
o(∩_∩)o...~~~
空间:http://hi.baidu.com/fair_jm
喜欢批处理的没事的话去逛逛哦~~

TOP

就批处理而言 冒泡排还是快的
然后在循环里判断连续数否

TOP

返回列表