我正在尝试实现冒泡排序来按优先级对列表进行排序。例如,列表具有以下格式,第 3 个元素为优先级:
[("Ted", 100, 3), ("Boris", 100, 1), ("Sam", 100, 2)]
我已经尝试了下面的标准冒泡排序方法,但是这不起作用。任何建议,将不胜感激。
bubbleSort :: (Ord t) => [t] -> [t]
bubbleSort a = loop (length a) bubble a
bubble :: (Ord t) => [t] -> [t]
bubble (a:b:c) | a < b = a : bubble (b:c)
| otherwise = b : bubble (a:c)
bubble (a:[]) = [a]
bubble [] = []
loop :: (Num a, Ord a) => a -> (t -> t) -> t -> t
loop num f x | num > 0 = loop (num-1) f x'
| otherwise = x
where x' = f x