[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
就批处理而言 冒泡排还是快的
然后在循环里判断连续数否

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

不是说排序的吗?
结果出来就是排好序的啊
1

评分人数

TOP

可能是我理解不够
要是以第一个数为基准 那就直接在数组里找吧 排序也不要
让N + 1 递增 然后 标记
另数组 ”54 11 56 2 55 3 5 4 1 7 56 56 8 10“
最终结果是?

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

TOP

输入 54 11 56 2 55 3 5 4 1 7 56 56 8 10
怎么结果:54  57
并不是你要的  54  56

TOP

返回列表