94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
|
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
|
-
+
-
+
-
+
-
+
-
-
+
+
-
+
|
concat {}
# Check that tclListObj.c's SetListFromAny handles possible overlarge
# string rep lengths in the source object.
proc slowsort list {
set result {}
set last [expr [llength $list] - 1]
set last [expr {[llength $list] - 1}]
while {$last > 0} {
set minIndex [expr [llength $list] - 1]
set minIndex [expr {[llength $list] - 1}]
set min [lindex $list $last]
set i [expr $minIndex-1]
set i [expr {$minIndex - 1}]
while {$i >= 0} {
if {[string compare [lindex $list $i] $min] < 0} {
set minIndex $i
set min [lindex $list $i]
}
set i [expr $i-1]
set i [expr {$i - 1}]
}
set result [concat $result [list $min]]
if {$minIndex == 0} {
set list [lrange $list 1 end]
} else {
set list [concat [lrange $list 0 [expr $minIndex-1]] \
[lrange $list [expr $minIndex+1] end]]
set list [concat [lrange $list 0 [expr {$minIndex - 1}]] \
[lrange $list [expr {$minIndex + 1}] end]]
}
set last [expr $last-1]
set last [expr {$last - 1}]
}
return [concat $result $list]
}
test list-3.1 {SetListFromAny and lrange/concat results} {
slowsort {fred julie alex carol bill annie}
} {alex annie bill carol fred julie}
|