-2

任意のソート手法を使用する

配列変数 arr が含まれています: arr { 1 5 2 9 3 8 10 6}

lsort を使用しない場合

最後に、同じ配列変数にある o/p : arr { 1 2 3 5 6 8 9 10}

4

1 に答える 1

0

私たちはあなたに答えを与えることはできませんが、いくつかの有用なことを提案することができます. たとえば、リストの 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、多くの優れたプロパティを備えた効率的なアルゴリズムを実装しているため、単に使用していることに注意してください。残りの部分は、並べ替えを必要としないか、問題をデータベース エンジンに委譲します...)

于 2013-09-30T15:32:08.760 に答える