使用任何排序技术
数组变量 arr 包含:arr { 1 5 2 9 3 8 10 6}
不使用 lsort
最后 o/p 在同一个数组变量中:arr { 1 2 3 5 6 8 9 10}
虽然我们不会给您答案,但我们可以提出一些有用的建议。例如,您将列表的两个元素(at$idx1
和$idx2
)与以下内容进行比较:
string compare [lindex $theList $idx1] [lindex $theList $idx2]
您可以使用此过程来交换这两个元素:
proc swap {nameOfListVar idx1 idx2} {
upvar 1 $nameOfListVar theList
set tmp [lindex $theList $idx1]
lset theList $idx1 [lindex $theList $idx2]
lset theList $idx2 $tmp
return
}
你会这样称呼:
# Pass the list variable *name*
swap theList $idx1 $idx2
通常,您可以执行如下排序算法:
其他一切都是优化。(请记住,真正的 Tcl 程序只是使用lsort
,因为它实现了具有许多良好属性的高效算法,其余的要么不需要排序,要么将问题委托给数据库引擎......)