import Data.List (sort)
import Control.Monad (replicateM)
import System.IO
import Prelude
import System.CPUTime
import Control.DeepSeq
readArray :: Handle -> IO [Int]
readArray h = do
line <- hGetLine h
return $ map read $ words line
readArrays :: Handle -> Int -> IO [[Int]]
readArrays h n = replicateM n (readArray h)
getAvgTime :: [Double] -> Double
getAvgTime times = sum times / fromIntegral (length times)
main = do
handle <- openFile "test.txt" ReadMode
arrays <- readArrays handle 15
times <- mapM (\arr -> do
start <- getCPUTime
let sortedArr = sort arr
end <- getCPUTime
let diff = (fromIntegral (end - start)) / (10^12)
return diff) arrays
hClose handle
putStrLn "排序结果:"
mapM_ print (map sort arrays)
putStrLn $ "平均运行时间:" ++ show (getAvgTime times) ++ "s"