Welcome, guest | Sign In | My Account | Store | Cart
proc shellsort args {
set key 0
set increment 3
foreach arg $args {
set numbers($key) $arg
incr key
}
set number [array size numbers]

while {$increment > 0} {
   for {set i 0} {$i < $number} {incr i} {
   set j $i
   set temp $numbers($i)

   while {($j >=$increment) && ($numbers([expr $j-$increment]) > $temp)} {
   set numbers($j) $numbers([expr $j - $increment])
   set j [expr $j - $increment]
   }
   set numbers($j) $temp
   }

if {[expr $increment/2] != 0} {
      set increment [expr $increment/2]
    } elseif {$increment == 1} {
      set increment 0
    } else {
      set increment 1
    }

}
for {set i 0} {$i < $number} {incr i} {
lappend sort $numbers($i)
}
puts $sort 
}

# Put the numbers after command separated with spaces
shellsort 

History