任意のソート手法を使用する
配列変数 arr が含まれています: arr { 1 5 2 9 3 8 10 6}
lsort を使用しない場合
最後に、同じ配列変数にある o/p : arr { 1 2 3 5 6 8 9 10}
私たちはあなたに答えを与えることはできませんが、いくつかの有用なことを提案することができます. たとえば、リストの 2 つの要素 ( at$idx1
と$idx2
) を次のように比較します。
string compare [lindex $theList $idx1] [lindex $theList $idx2]
この手順を使用して、これら 2 つの要素を入れ替えることができます。
proc swap {nameOfListVar idx1 idx2} {
upvar 1 $nameOfListVar theList
set tmp [lindex $theList $idx1]
lset theList $idx1 [lindex $theList $idx2]
lset theList $idx2 $tmp
return
}
あなたは次のように呼びます:
# Pass the list variable *name*
swap theList $idx1 $idx2
一般に、次のようなソート アルゴリズムを実行できます。
それ以外はすべて最適化です。(実際の Tcl プログラムはlsort
、多くの優れたプロパティを備えた効率的なアルゴリズムを実装しているため、単に使用していることに注意してください。残りの部分は、並べ替えを必要としないか、問題をデータベース エンジンに委譲します...)