编辑代码

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

-- 从文件中读取15个数组
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
  
  -- 读取15个数组
  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"