Use recursive procedure to perform a bubble sort on a list of data

#! /usr/bin/expect --

# Use recursive procedure to perform a bubble sort on a list of data
proc recBubblesort {sData sLen} {

    set debug 0

    # Print the primary data
    if {$debug == 1} {
        send_user "Primary Data is $sData\n"
    }

    # Do the bubble sort
    if {$sLen > 1} {
        for {set i 0} {$i < [expr $sLen - 1]} {incr i} {
            set aTmp [lindex $sData $i]
            set bTmp [lindex $sData [expr $i + 1]]
            if {[string compare -nocase $aTmp $bTmp] > 0} {
                set temp [lindex $sData $i]
                set sData [lreplace $sData $i $i [lindex $sData [expr $i + 1]]]
                set sData [lreplace $sData [expr $i + 1] [expr $i + 1] $temp]
            }
        }

        recBubblesort $sData [expr $sLen - 1]
    } else {

        # Print the final data
        if {$debug == 1} {
            send_user "Final Data is $sData\n"
        }

        return $sData
    }

}

set str [lindex $argv 0]
if {$str == ""} {
    puts "Please input string!"
    exit
} else {
    set sLen [llength $str]
    set nData [recBubblesort $str $sLen]

    send_user "The primary data is <$str>\n"
    send_user "The data sorted is <$nData>\n"
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值