level 14
John▫Aº
楼主
qsort.bat
____________________________________________
@echo off
setlocal enabledelayedexpansion
setlocal
set k=0
for %%i in (%*) do (
set /a k+=1
set arr.!k!=%%i
)
set arr.length=%k%
call :s arr
for %%i in (%arr.re%) do (
set /p a=%%i <nul
)
echo.
endlocal
exit /b
:s
if !%1.length! lss 2 (
call :return %1
exit /b
)
for /l %%i in (2,1,!%1.length!) do (
if !%1.%%i! leq !%1.1! (
call :push %1.1 !%1.%%i!
) else (
call :push %1.2 !%1.%%i!
)
)
call :s %1.1
call :s %1.2
set %1.re=!%1.1.re! !%1.1! !%1.2.re!
exit /b
:push
set /a %1.length+=1
set %1.!%1.length!=%2
exit /b
:return
if !%1.length!==0 set "%1.re="
for /l %%i in (1,1,!%1.length!) do (
set %1.re=!%1.re! !%1.%%i!
)
exit /b
___________________________________________________
用法:调用qsort+欲排序字符串(用for可接受的符号隔开,如空格和英文逗号)
例如:
qsort 5,2,6,3
qsort f,e,k,c,w,a
qsort 432,567,223,12,456567,213
...
...
...
2017年06月25日 03点06分
1
____________________________________________
@echo off
setlocal enabledelayedexpansion
setlocal
set k=0
for %%i in (%*) do (
set /a k+=1
set arr.!k!=%%i
)
set arr.length=%k%
call :s arr
for %%i in (%arr.re%) do (
set /p a=%%i <nul
)
echo.
endlocal
exit /b
:s
if !%1.length! lss 2 (
call :return %1
exit /b
)
for /l %%i in (2,1,!%1.length!) do (
if !%1.%%i! leq !%1.1! (
call :push %1.1 !%1.%%i!
) else (
call :push %1.2 !%1.%%i!
)
)
call :s %1.1
call :s %1.2
set %1.re=!%1.1.re! !%1.1! !%1.2.re!
exit /b
:push
set /a %1.length+=1
set %1.!%1.length!=%2
exit /b
:return
if !%1.length!==0 set "%1.re="
for /l %%i in (1,1,!%1.length!) do (
set %1.re=!%1.re! !%1.%%i!
)
exit /b
___________________________________________________
用法:调用qsort+欲排序字符串(用for可接受的符号隔开,如空格和英文逗号)
例如:
qsort 5,2,6,3
qsort f,e,k,c,w,a
qsort 432,567,223,12,456567,213
...
...
...