我需要tcl programm进行排序,但我不应该使用lsort操作。 我试过这个。但没有运气
set list1 {1 6 5 4}
set list2 {}
for {set i 0} {$i < [llength $list1]} {incr i} {
set temp [lindex $list1 $i]
for {set z [expr $i+1]} {$z < [llength $list1]} {incr z} {
set temp2 [lindex $list1 $z]
#puts "$temp,$temp2,$list1,$i,$z"
#puts $temp2
if {$temp < $temp2} {
} else {
puts "$i,$z"
set list1 [lreplace $list1 $i $i $temp2]
puts "> $list1"
set list1 [lreplace $list1 $z $z $temp]
puts ":: $list1"
}
}
}
puts $list1
由于 兰芝斯
答案 0 :(得分:0)
那么,如果需要,您可以实施各种排序算法。只需将Tcl的列表视为任意数量的其他语言的数组:
lrepeat
创建,但是通过排序算法,您通常会获得要排序的列表。lindex
读取特定索引处的值。lset
在特定索引处写入值。作为提示,这里如何在两个索引,$i
和$j
交换元素。它使用临时变量tmp
:
set tmp [lindex $list1 $i]
lset list1 $i [lindex $list1 $j]
lset list1 $j $tmp