#!/usr/bin/perl -w # 把命令列上的所有參數排序. 用選擇排序法 (selection sort). # http://www.cyut.edu.tw/~ckhung/b/pl/ use strict; my (@data, $n, $i, $j, $min, $tmp, $item); @data = @ARGV; # 拷貝整個陣列 $n = $#data + 1; # 總共有幾個元素要排序? for ($i = 0; $i < $n; ++$i) { # 迴圈每做一次, 就把第 $i 小的元素選出來 $min = $i; # 先前已排好的不算, 目前所知的最小元素是第 $min 個 for ($j = $i + 1; $j < $n; ++$j) { # 後面的元素當中, 那個最小呢? $min = $j if (($data[$j] cmp $data[$min]) < 0) # 注意: 如果不加括弧的話, 會先算 < 再算 cmp # 如果要按照數字的順序排, 就把 cmp 換成 <=> } if ($min != $i) { # 那麼就要把最小的元素給調過來了 $tmp = $data[$i]; $data[$i] = $data[$min]; $data[$min] = $tmp; } } foreach $item (@data) { print " $item"; # 注意: 在雙引號內, perl 還是認得純量變數, # 會把它的值代換進去. } print "\n"; # 以下僅供參考 # 這個程式其實可以寫成兩句話: # @data = sort @ARGV; # print " @data\n";