Algorithm 这一类有什么问题?

Algorithm 这一类有什么问题?,algorithm,coldfusion,mergesort,Algorithm,Coldfusion,Mergesort,我试图在Coldfusion中实现mergesort,但它给出了不正确的结果,代码: <cffunction name="mergeSort" hint="Sorts arrays of structs"> <cfargument name="arr" type="Array" required="yes"> <cfif Arraylen(arr) LTE 1> <cfreturn arr /> </cfif> <cfs

我试图在Coldfusion中实现mergesort,但它给出了不正确的结果,代码:

<cffunction name="mergeSort" hint="Sorts arrays of structs">
<cfargument name="arr" type="Array" required="yes">

<cfif Arraylen(arr) LTE 1>
   <cfreturn arr />
</cfif>

<cfset left_ = ArrayNew(1)>
<cfset right_ = ArrayNew(1)>
<cfset mid_ = Int(Arraylen(arr) / 2)>

<cfloop index="i" from="1" to="#mid_#">
   <cfset arrayAppend(left_, arr[i])>
</cfloop>

<cfloop index="j" from="#mid_+1#" to="#ArrayLen(arr)#">
   <cfset arrayAppend(right_, arr[j])>
</cfloop>


<cfreturn merge( mergeSort(left_), mergeSort(right_) )>

</cffunction>



<cffunction name="merge" hint="Merges two arrays">
<cfargument name="left_" required="yes" type="Array">
<cfargument name="right_" required="yes" type="Array">

<cfset result = ArrayNew(1)>

<cfloop condition="ArrayLen(left_) GT 0 AND ArrayLen(right_) GT 0">
   <cfif left_[1].attr3 LTE right_[1].attr3>
       <cfset arrayAppend(result, left_[1])>
       <cfset arrayDeleteAt(left_, 1)>
   <cfelse>
       <cfset arrayAppend(result, right_[1])>
       <cfset arrayDeleteAt(right_, 1)>
   </cfif>
</cfloop>

<cfif ArrayLen(left_) GT 0>
   <cfloop array="#left_#" index="v">
       <cfset ArrayAppend(result, v)>
   </cfloop>
</cfif>

<cfif ArrayLen(right_) GT 0>
   <cfloop array="#right_#" index="v">
       <cfset ArrayAppend(result, v)>
   </cfloop>
</cfif>

<cfreturn result />

</cffunction>
它在名为attr3的结构键上对结构数组进行排序。发生的情况是,它似乎正确地拆分了列表,但随后继续将相同的列表附加到结果集。因此,例如,如果我将left.attr3作为Title,将right.attr3作为另一个,结果将是Title,other,other。。等等。

你看过吗


顺便说一句,请检查所有变量

顺便说一句,您可以使用Java连接数组

顺便说一句,您可以使用mid_u=Arraylenarr\2表示整数div

您看过了吗


顺便说一句,请检查所有变量

顺便说一句,您可以使用Java连接数组


顺便说一句,您可以使用mid_u=Arraylenarr\2来计算整数div

顺便说一句,请确定所有变量的范围!好的。变量范围的Var解决了这个问题。我想这就是我因不恰当的编码实践而得到的。谢谢亨利。你应该回复,这样我才能选择正确的答案:@Svante你可以很容易地用coldfusion脚本重写上面的内容。您不必使用标记语法。顺便说一句,请查看所有变量!好的。变量范围的Var解决了这个问题。我想这就是我因不恰当的编码实践而得到的。谢谢亨利。你应该回复,这样我才能选择正确的答案:@Svante你可以很容易地用coldfusion脚本重写上面的内容。您不必使用标记语法。谢谢!添加更多字符以使此可评论。谢谢!添加更多字符以使此可注释。