Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AutoIt_ArraySort(..)函数排序不正确_Arrays_Sorting_Quicksort_Autoit - Fatal编程技术网

AutoIt_ArraySort(..)函数排序不正确

AutoIt_ArraySort(..)函数排序不正确,arrays,sorting,quicksort,autoit,Arrays,Sorting,Quicksort,Autoit,我正在编写一个AutoIt脚本,它将接收一个文本文件。文本文件由一系列测试结果组成,每组5行。该脚本将遍历该文件并输出每组的中位数分数。分数显示在第11个“,”之后。例如,此示例文件: a,a,a,a,a,a,a,a,a,a,100.2 a,a,a,a,a,a,a,a,a,a,300.2 a,a,a,a,a,a,a,a,a,a,160.2 a,a,a,a,a,a,a,a,a,a,301.2 a,a,a,a,a,a,a,a,a,a,161.2 b,b,b,b,b,b,b,b,b,b,110.5

我正在编写一个AutoIt脚本,它将接收一个文本文件。文本文件由一系列测试结果组成,每组5行。该脚本将遍历该文件并输出每组的中位数分数。分数显示在第11个“,”之后。例如,此示例文件:

a,a,a,a,a,a,a,a,a,a,100.2
a,a,a,a,a,a,a,a,a,a,300.2
a,a,a,a,a,a,a,a,a,a,160.2
a,a,a,a,a,a,a,a,a,a,301.2
a,a,a,a,a,a,a,a,a,a,161.2

b,b,b,b,b,b,b,b,b,b,110.5
b,b,b,b,b,b,b,b,b,b,87.5
b,b,b,b,b,b,b,b,b,b,89.5
b,b,b,b,b,b,b,b,b,b,190.5
b,b,b,b,b,b,b,b,b,b,170.5

c,c,c,c,c,c,c,c,c,c,90.2
c,c,c,c,c,c,c,c,c,c,190.2
c,c,c,c,c,c,c,c,c,c,40.2
c,c,c,c,c,c,c,c,c,c,20.2
c,c,c,c,c,c,c,c,c,c,80.2
我预计a、b和c组的中位数分别为161.2、110.5和80.2。但是,输出结果如下所示:

median is = 161.2 ----- sorted array : 100.2 , 160.2 , 161.2 , 300.2 , 301.2
median is = 190.5 ----- sorted array : 110.5 , 170.5 , 190.5 , 87.5 , 89.5
median is = 40.2 ----- sorted array : 190.2 , 20.2 , 40.2 , 80.2 , 90.2
第一个组被正确排序,但之后数组不再被排序。尽管在输出之前直接调用了
\u ArraySort(…)
,但仍然如此。知道为什么会这样吗

代码如下:

Func结果()
$size=5;从其他函数传递的临时变量
$gameDetail=“”
$rawResult=“D:\RTG\u Benchmark\results\results.txt”
本地$openResults=FileOpen(“D:\RTG\u Benchmark\results\results2.txt”,1)
本地$i=1
本地$j=0
本地$spaceCount=0
本地$score[$size]
本地$runMultiplier[2];0=先前,1=当前
本地$subString
做
$resultLine=FileReadLine($rawResult,$i);从原始结果中读取行
$subString=StringSplit($resultLine,“,”);分裂
如果StringLen($resultLine)=0,则
$spaceCount+=1
$j=0
FileWriteLine($openResults,“&@CRLF)
其他的
$gameDetail=$subString[1]&$subString[2]&$subString[3]&$subString[4]&$subString[5]&$subString[6]&$subString[7]&$subString[8]&$subString[9]&$subString[10];子串1-10
$runMultiplier[1]=$gameDetail
如果$i=1,则;
$score[$j]=$subString[11]
其他的
如果$runMultiplier[1]$runMultiplier[0],则
$j=0
$score[$j]=$subString[11]
其他的
$j+=1
如果$j>=$size,则
$j=0
恩迪夫
$score[$j]=$subString[11]
恩迪夫
$resultLine=FileReadLine($rawResult,$i+1)
$subString=StringSplit($resultLine,“,”);分裂
如果StringLen($resultLine)=0或$gameDetail$subString[1]&$subString[2]&$subString[3]&$subString[4]&$subString[5]&$subString[6]&$subString[7]&$subString[8]&$subString[9]&$subString[10],则
_ArraySort($score,0,0,0,1)
控制台写入(“中位数为=&($score[$size/2]&”--排序数组:&$score[0]&“,&$score[1]&“,&$score[2]&“,&$score[3]&“,&$score[4]&@CRLF))
$j=0
恩迪夫
恩迪夫
恩迪夫
$i+=1
$runMultiplier[0]=$runMultiplier[1]
直到$i>=\u文件计数行($rawResult)
$j+=1
$score[$j]=$subString[11]
_ArraySort($score)
控制台写入(“中位数为=&($score[$size/2]&”--排序数组:&$score[0]&“,&$score[1]&“,&$score[2]&“,&$score[3]&“,&$score[4]&@CRLF))
FileClose($openResults)
睡眠(100000)
返回0
EndFunc

我发现了问题。AutoIt将数字视为字符串,并从左到右一次排序一位数字


Number()?