在数组内排序数字[批处理脚本]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在数组内排序数字[批处理脚本]相关的知识,希望对你有一定的参考价值。

我正在尝试创建一个对数字进行排序的数组。它不会给我错误消息,而是会给输入数字带来无限循环,以尝试执行某些操作。我需要使用此方法对数组中的数字进行排序,但似乎找不到错误的地方。

@echo off
setlocal enabledelayedexpansion
set n=
set n=1
rem *** Section 1 "Input data into num array"
:Input
set v=
set /p v=enter a value:
if !v!== goto Input
set /a v=!v!
set num[!n!]=
set num[!n!]=!v!
set /a n=!n!+1
if !n! lss 6 goto Input
set /a n=!n!-1

rem *** Section 2 "comparing array value"
:A
set i=0

:B
set i=!i!+1
set swp=0
echo !num[%i%]! gtr !num[%j%]! goto D
set /a j=!i!+1
if !num[%i%]! gtr !num[%j%]! goto D

rem *** Section 3 "NO Swap needed"
:E
if !j! lss !n! goto B
rem *** Section 4 "Swap needed"
:D
set swp=1
set tmp=!num[%i%]!
set num[!i!]=!num[%j%]!
set num[!j!]=!tmp!
echo !num[!i!]!, !num[%j%]!
if !j! lss !n! goto B
goto A

:X
!echo[1]!
!echo[2]!
!echo[3]!
!echo[4]!
!echo[5]!
pause
endlocal
答案

通常,这只是在正确的时间以正确的顺序以正确的方法进行扩展的情况。

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION

Set "Val=0"
:main
cls
Set /a "Val=%Val% + 1"
ECHO Enter Array[!Val!]
SET /p "Array[!Val!]=
IF %Val%==5 GOTO compare
GOTO :main

:compare
Set "Val=0"
cls
Set "comp[1]=2"
Set "comp[2]=4"
Set "comp[3]=6"
Set "comp[4]=8"
Set "comp[5]=10"

ECHO Array[1] = %Array[1]%
ECHO Array[2] = %Array[2]%
ECHO Array[3] = %Array[3]%
ECHO Array[4] = %Array[4]%
ECHO Array[5] = %Array[5]%

pause
:process
cls
Set /a "Val=%Val% + 1"
IF "!Array[%Val%]!" NEQ "%Comp[!Val!]%" Set "Array[!Val!]=!Comp[%Val%]!"
IF %Val%==5 GOTO :Display
GOTO :process

:Display
ECHO Array[1] = %Array[1]%
ECHO Array[2] = %Array[2]%
ECHO Array[3] = %Array[3]%
ECHO Array[4] = %Array[4]%
ECHO Array[5] = %Array[5]%
pause

希望这能使您走上正确的轨道。

以上是关于在数组内排序数字[批处理脚本]的主要内容,如果未能解决你的问题,请参考以下文章

在 Windows 中使用批处理脚本对文本文件进行排序

循环操作脚本 3 中的事件,仅获取最后一个数字

SPOJ - DQUERY: D-query 离线处理 + 树状数组

Linux脚本练习之script075-域名进行计数排序处理

Linux脚本练习之script075-域名进行计数排序处理

如何编写批处理脚本来检查文件夹内的多个文件夹和文件夹并将 csv 文件设置为变量?