Haskell程序按字典序(词典顺序)排序元素
在本教程中,我们将讨论编写一个程序,以便在Haskell编程语言中按字典序排序元素。Haskell是一种声明式、强类型和函数式编程语言。Haskell中的计算是数学函数。
字典序是指词典顺序或字符ASCII值的顺序。
在本教程中,我们将看到两种在Haskell中实现按字典序排序元素的程序的不同方法。
使用内置函数sort按字典序排序元素的程序。
使用自定义排序函数按字典序排序元素的程序。
算法步骤
声明或输入元素列表。
实现程序以对元素进行排序。
打印或显示排序后的元素。
示例1
使用函数sort按字典序排序元素的程序
import Data.List main = do -- declaring and initializing the list elements let list=["wel","bel","jel","keen","roll"] -- invoking the sort function and printing the returned result print ("The sorted List in lexicographical order is:") print (sort list)
输出
"The sorted List in lexicographical order is:" ["bel","jel","keen","roll","wel"]
在上面的程序中,我们从Data包中导入了**List**模块,以便在列表上使用一些实用函数。我们声明并初始化了一个包含一些字符串值(“bel”、“jel”、“keen”、“roll”、“wel”)的列表。我们调用了带有声明列表参数的**sort**函数。sort是List模块中的一个函数,它接受一个列表作为参数并返回排序后的列表。最后,我们打印了返回的排序列表。
示例2
使用自定义排序函数按字典序排序元素的程序
-- function declaration for function insert insert :: [[Char]]->[Char]->[[Char]] -- function definition for function insert -- base case insert [] y = [y] insert (x:xs) y = if y < x then [y]++[x]++xs else [x]++(insert xs y) -- function declaration for function insert sort :: [[Char]]->[[Char]] -- function definition for function insert -- base case sort [] = [] sort (x:xs) = insert (sort xs) x main = do -- declaring and initializing the list elements let list=["wel","bel","jel","keen","roll"] -- print ("The sorted List in lexicographical order is:") print (sort list)
输出
"The sorted List in lexicographical order is:" ["bel","jel","keen","roll","wel"]
在上面的程序中,
我们声明了一个**insert**函数,它接受一个字符串数组和一个字符串作为输入,并返回一个字符串数组。在其函数定义中,我们正在获取两个参数列表模式**(x:xs)**和一个字符串y。我们正在将x(第一个参数中列表中的第一个字符串)与y进行比较。如果y在字典序上小于x,我们将返回列表[y]++[x]++xs。其中“++”是连接两个列表的操作符。如果y在字典序上大于x,我们将返回x与对函数本身的递归调用(带有剩余列表和y作为参数)连接的结果。
即insert是一个实用函数,它将元素插入到排序列表中的正确位置。例如,对于此函数调用**insert [2,4,5] 3**,输出为**[2,3,4,5]**。
我们声明了一个sort函数,它接受一个字符串列表作为输入并返回一个字符串列表。
在其函数定义中,我们调用了insert,其中第一个参数是对自身本身的递归调用(带有剩余列表作为参数),第二个参数是列表中的第一个元素。在基本情况下,当参数为空列表时,我们返回一个空列表。此函数使用插入排序技术对列表中的元素进行排序。
在主函数中,我们声明并初始化了一个包含一些字符串值的列表。我们调用了带有声明列表的sort函数,最后打印了返回的排序列表。
结论
在本教程中,我们讨论了在Haskell编程语言中实现一个程序以按字典序排序元素。