haskell - Haskell 中的快速排序错误

标签 haskell quicksort

请检查我的Haskell程序代码 GHC 表示第 9 行的输入“\”存在解析错误。 我真的不知道如何纠正它。

    import System.IO
    import Data.Time.Clock
    import Random 
    qsort [] = [] 
    qsort (x:xs) = qsort1 elts_lt_x ++ [x] ++ qsort1 elts_greq_x 
                    where 
                      elts_lt_x   = [y | y <- xs, y < x] 
                      elts_greq_x = [y | y <- xs, y >= x]
    module Main where
    main = do    
        x <- getLine
        gen=mkStdGen 60
        arrays=take (read x) (randomRs (1,(read x)) gen ::[Int])
        start <- getCurrentTime
        print(take 1(qsort arrays))    
        end <- getCurrentTime
        print $ diffUTCTime  end start

最佳答案

  • module ... 行位于 import ... 之前。
  • 我认为 qsort1 应该是 qsort
  • 对于赋值,您需要 let。如let gen = ... .
  • 您应该考虑使用 System.Random 而不是 haskell98 Random 模块。
  • 有一个关于快速排序定义的讨论。上Haskellwiki: Why Haskell Matters它也称为过滤排序。

关于haskell - Haskell 中的快速排序错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22277898/

相关文章:

java - 计算数组中间索引的差异?

java - QuickSort 在线程 "main"java.lang.StackOverflowError 中给出异常

haskell - 高阶函数内的多态性?

class - 创建 Eq 实例并进行计算

c# - 为什么这些快速排序算法不能完全工作?

java - 我该如何修复重复的 QuickSort 算法

java - Stackoverflow 与 Quicksort Java 实现

haskell - 使用 STM 修改和打印状态

c - 如何将字符串从 Haskell 传递给 C?

haskell - 这个函数是否利用了haskell的惰性求值