需要tcl程序进行排序(没有lsort)

时间:2016-06-30 15:28:16

标签: sorting tcl

我需要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

由于 兰芝斯

1 个答案:

答案 0 :(得分:0)

那么,如果需要,您可以实施各种排序算法。只需将Tcl的列表视为任意数量的其他语言的数组:

  • 如果需要,使用lrepeat创建,但是通过排序算法,您通常会获得要排序的列表。
  • 使用lindex读取特定索引处的值。
  • 使用lset在特定索引处写入值。

作为提示,这里如何在两个索引$i$j交换元素。它使用临时变量tmp

set tmp [lindex $list1 $i]
lset list1 $i [lindex $list1 $j]
lset list1 $j $tmp
相关问题