01/03/2011, 22:14
Bon, alors en cherchant un peu, j'ai trouvé des fonctions de bubble sort:
Ca ne va peut-être pas aider, je vais chercher s'il y a des fonctions plus utiles pour le cas de notre demandeur
TCL
proc bubble_sort {a} {
if {[llength $a] >= 2} {
for {set i [expr [llength $a]-1]} {$i > 0} {incr i -1} {
set has_swapped "FALSE"
for {set j 0} {$j < $i} {incr j} {
if {[lindex $a $j] > [lindex $a [expr $j + 1]]} {
set temp [lindex $a $j]
set a [lreplace $a $j $j [lindex $a [expr $j + 1]]]
set a [lreplace $a [expr $j + 1] [expr $j + 1] $temp]
set has_swapped "TRUE"
}
}
if {$has_swapped == "FALSE"} {
break
}
}
}
return $a
}
TCL
package require Tcl 8.5
package require struct::list
proc bubblesort {A} {
set len [llength $A]
set swapped true
while {$swapped} {
set swapped false
for {set i 0} {$i < $len - 1} {incr i} {
set j [expr {$i + 1}]
if {[lindex $A $i] > [lindex $A $j]} {
struct::list swap A $i $j
set swapped true
}
}
incr len -1
}
return $A
}
puts [bubblesort {8 6 4 2 1 3 5 7 9}] ;# => 1 2 3 4 5 6 7 8 9
Ca ne va peut-être pas aider, je vais chercher s'il y a des fonctions plus utiles pour le cas de notre demandeur