2016-06-30 17 views
0

ソートにはtcl programmが必要ですが、lsort操作は使用しないでください。 これを試しました。あなたがしたい場合は運ソートのためのtcl progamが必要です(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

:それは一時的な変数、tmpを使用していますあなたが何をしたいか。 –

+0

https://rosettacode.org/wiki/Sorting_algorithms/Merge_sort#Tcl – Dinesh

答えて

0

はさて、あなたは、ソートアルゴリズムのすべての種類を実装することはできません。ただ、他の言語の任意の数の配列のようにTclのリストを扱う:必要に応じてソートアルゴリズムを使用すると、通常ソートするリストを与えられているものの

  • は、lrepeatを作成します。
  • 特定のインデックスの値をlindexで読み取ります。
  • 特定のインデックスの値をlsetと記述します。ヒントとして

、ここでは、2つのインデックス$i$jで要素を交換する方法です。 GUESSしようとしている私たちはあなたのためのコードを書いていない、とあなたは、このコードが動作していない方法を説明することができない場合、我々は時間を無駄にするつもりはない

set tmp [lindex $list1 $i] 
lset list1 $i [lindex $list1 $j] 
lset list1 $j $tmp 
+0

"lsort'を使わないでソートするのは宿題のように聞こえるので、アルゴリズム全体を渡すことはありません。 –

関連する問題