haskell排序的操作

基于STM32的多普勒雷达测速 基于多普勒雷达传感器,以STM32单片机为主控芯片,根据不同模块检测距离的不同,使用不同多普勒雷达传感器实现对远近距离车辆行驶速度及方向的测量。 1、基础知识 无线电探测和测距,是用无线电(电磁波)方法发现目标并测定其空间位置的装置。随着雷达技术的发展,现代雷达不仅可以对目标进行定位,还可以测量目标的速度、对目标进行成像甚至测量目标的大小和材料特性。所有利用雷达波来检测物体速度的原理,其理论基础皆源自于“多普勒效应”,... 阅读详情

注意处理相同的元素

1快排

qsort []=[]

qsort (h:t)=(qsort(filter (<h) t) )++(num (h:t)) ++(qsort(filter (>h) t))
num (h:t)=filter (==h) (h:t)


2冒泡

(1)


bubble_once [] = [] 
bubble_once [x] = [x] 
bubble_once (x : y : zs) | x < y     = y : bubble_once (x : zs) 
                          | otherwise = x : bubble_once (y : zs) 
  
bubble_sort [] = [] 
bubble_sort list = x : bubble_sort xs 
                    where (x : xs) = (reverse . bubble_once) list 


(2)不reverse的例子,不过,++ 和init的操作效率不高,估计和你的差不多: 

bb [] =[] 

bb [x] = [x] 
bb (x:y:xs) | x > y = y: bb (x:xs) 
             | otherwise = x: bb (y:xs) 
                              
bubsort [] = [] 
bubsort xs = let z = bb xs in bubsort (init z) ++ [last z]



(3)选择排序

import Data.List 
select_sort ::Ord a => [a]->[a] 
select_sort [] = [] 
select_sort l =  
     let  
         m = maximum l  
         num = elemIndexNum m  l  
         list0 = numElemList num m 
     in  
         list0 ++ select_sort (filter (<m) l) 
  
--列表中某特定元素的个数 

elemIndexNum ::Ord a => a ->[a]->Int 
elemIndexNum x xs= length $ elemIndices x xs 
  
--相当于python中的[x]*num 
numElemList ::Ord a => Int->a ->[a] 
numElemList 0 x=[] 
numElemList num x= x : numElemList (num-1) x  


主要转载自:水木 :http://www.newsmth.net/nForum/#!article/FuncProgram/24436?p=1

Claude Code 源码一夜流出:会看热闹的人很多,会读源码的人很少 摘要:Claude Code源码意外泄露后,作者分享了高效的源码学习方法:1)Fork仓库保存代码;2)使用Qoder的Repo Wiki功能生成结构化文档和UML图;3)基于Wiki创建可复用的Skill。这种方法比直接让AI总结代码更系统深入,并推荐了可视化学习项目辅助理解。文章强调实践的重要性,提供了具体工具和操作指南。 阅读详情

相关推荐

wsl2 配置ubuntu 固定ip

wsls ubuntu 设置固定ip

musk1212的博客 2616

haskell函数式编程实现的五种排序

插入排序insert :: Int -&gt; [Int] -&gt; [Int] insert x [] = [x] insert x (y:ys) | x &lt; y = x:y:ys | otherwise = y : insert x ys insertSort :: [Int] -&gt; [Int] insertSort [] = [] insert...

Keyu 1384

基于PDF文档结构的数字隐写

PDF隐写

xiongshivigor的博客 1426

Haskell学习-常见排序算法

这篇文章尝试使用 Haskhell 来重写常见的排序算法。这里不考虑效率,比如时间和空间上的,所以不会刻意去写成尾递归。 插入排序 插入排序是一种简单易懂的排序。这里分为两个步骤: 将一个元素插入一个已被排序的数列 对一个未排序的数列不停施以步骤 1 首先步骤 1,要插入数 x,当前序列中第一个数为 y。将 x, y 较小的数放在前面,然后对去除第一个数之后的子序列不停重复上述过程。 inse...

weixin_30642869的博客 435

ch32v103xx 烧写

烧写方式 串口uart, usb,swd(wch link)但不建议按此使用,参官方说明。

qq_39239990的博客 637

全栈拆解华为乾崑 ADS 5:WEWA2.0智能体架构与安全风险场技术、实现多传感器全融合感知与主动安全预判、助力城市NOA/高速领航/全场景无人通行极致落地

华为乾崑ADS 5的核心颠覆性,不在于单一功能的小幅升级,而在于实现了自动驾驶从“工具式辅助驾驶”到“拟人化智能体驾驶”的全栈范式革命。通过WEWA 2.0端云协同AI智能体架构,解决了传统智驾决策僵硬、博弈能力弱、学习效率低的行业痛点;通过行业首发安全风险场技术,将自动驾驶安全体系从被动避险升级为主动预判,直接减半行车风险;通过乾崑OS专属车规系统底座,保障高阶智驾的低时延、高稳定、高可靠运行;通过多传感器超融合感知体系,实现全场景、全天候、无盲区的精细化环境理解。

getusushu的博客 288

haskell实现快排的代码为什么这么短

haskell快排的代码为什么这么短 q_sort n=case n of []->[] (x:xs)->q_sort [a|a<-xs,a<=x]++[x]++q_sort [a|a<-xs,a>x] what!就这?居然实现了面试官随时可能给你扔过来的“同学,请写一个快排

gohike的博客 4136

知识图谱:综述

第一种理解:知识图谱本质上是语义网络。本体论是语义网络中最重要的一个要素。第二种理解:知识图谱也叫做多关系图,由多种类型的节点和多种类型的边组成。课程以第二种理解为主。

u013250861的博客 479

Haskell 的快速排序

我一直以为,c++已经够简洁的了,今天看了haskell的语法,写了一遍快排,这。。。 partation (x:xs) = partation (dropWhile (x<) xs)++(x:partation (takeWhile (x<) xs)) partation _=[] main=print(partation [5,9,8,7,6,4,3,2,1]) dropWhile的意思是

2693

rk3588 适配以太网(百兆)

虽然 RK3588 的 GMAC 控制器原生支持千兆速率(10/100/1000 Mbps),但在某些工业控制、物联网网关或成本敏感型硬件设计中,开发者会选择将其配置为 百兆以太网(Fast Ethernet) 模式。

weixin_35723192的博客 218

使用Google Earth Engine下载JRC全球水体数据

通过Google Earth Engine平台和提供的源代码,研究人员和水资源管理者可以方便地获取和利用这一重要的水资源监测数据集,从而开展相关的研究和决策支持工作。要使用Google Earth Engine下载JRC全球水体数据,首先需要在Google Earth Engine平台上进行注册和登录。JRC全球水体数据是由欧洲联合研究中心开发的高分辨率全球水体分类数据集,覆盖了整个地球的陆地和水域。下载完成后,你可以使用各种遥感数据处理软件来打开和分析这些数据,以满足不同的研究和应用需求。

LrlDebug的博客 1158

Haskell语言的链表排序

在计算机科学中,链表是一种线性数据结构,由一系列节点组成。每个节点包含数据和一个指向下一个节点的指针。相比数组,链表的插入和删除操作更为灵活,但在查找某个特定元素时效率较低。Haskell的链表通常以递归的方式表示,具有良好的表达力。haskell这里,Nil表示空链表,而Cons构造器则表示一个包含值和指向下一个元素的链表节点。在Haskell中,我们可以用递归的方式定义链表的基本操作,例如添加、删除和遍历等。

2501_91314476的博客 603

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Haskell快排代码

haskell这段递归快排只需要六行代码,而且还可以处理不同类型的数据,很优雅。qucikSort ::(Ord a)=>[a]->[a] qucikSort []=[] qucikSort (x:xs)= let smallerNum=[a|a<-xs,a<=x] largerNum=[a|a<-xs,a>x] in quickSort smallerNum++[

u010742342的博客 1658

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Haskell:如何类型化快速排序

以下为类型类版本的快排代码,type family版本待补。 要点: 用data+instance确定递推规则,从而定义递归函数。递推规则类似Haskell里的let in。 用class+instance定义模式匹配。 含有模式匹配的函数,需要先定义模式匹配,然后包装一层。 {-# LANGUAGE MultiParamTypeClasses #-} -- {-# LANGUAGE TypeFamilies #-} -- {-# LANGUAGE GADTs #-} {-# LANGUAGE Func

WinterShiver 324

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

haskell-归并排序

-- 有序数组合并 merge' :: Ord a => [a] -> [a] -> [a] merge' [] [] = [] merge' [] x = x merge' x [] = x merge' (x : xs) (y : ys) | x < y = x : (merge' xs (y : ys)) | otherwise = y : (merge' (x : xs) ys) -- 分割数组 split_1 [x_1,

weixin_43423614的博客 445

haskell - recursion

Haskell is such an language that you can leverage aided with recursion, you can solve a load of issues.    we will going to examine some examples which can be solved by the recursion, problem such ...

iteye_13882的博客 253

haskell binary tree

-- 求二叉树的最大深度、直径、统计二叉树的节点数量 -- 测试样例 -- (Node 1 (Node 2 (Node 4 Empty Empty) Empty) (Node 3 Empty (Node 5 (Node 6 Empty Empty) Empty))) -- 节点个数:6个 最大深度:4 最大宽度:6 -- 二叉树结构的定义 data Tree a = Node a (Tree a) (Tree a) | Empty deriving Show -- 求二叉树的节点个数 size :: T

weixin_40588257的博客 459

haskell 乱搞笔记[原创]

脑洞时间:为什么世界上有那么多程序语言,那是腐朽的资本主义为了增加广大人民学习成本以及编译原理太过普及造成的,建议大学取消编译原理的一切课程,并挥起奥姆休的剃刀,把所有程序语言统统踢了,除机器语言外只留下两种语言:汇编和haskell(逃 简明扼要的写一点haskell 好玩的东西 首先是一些基本操作,命令行按ghci进入,一些基本操作前...

weixin_30603633的博客 126

Haskell语言的循环实现

Haskell 的函数式编程特性为我们提供了许多实现循环和迭代的方法。通过递归、尾递归、高阶函数和列表理解,我们可以优雅地处理复杂的循环逻辑,同时保持代码的简洁和可读性。虽然 Haskell 不具备传统意义上的循环结构,但其提供的这些工具和思想,使得我们能够以更具表达力的方式来解决问题。在学习 Haskell 的过程中,掌握这些核心概念是非常重要的,它们将帮助你在编写 Haskell 代码时,更加灵活和高效。希望本文能够对你理解 Haskell 中的循环实现有所帮助,让你在函数式编程的世界中畅游。

2501_90195495的博客 424

Haskell语言的单向链表

在Haskell中,单向链表可以通过定义一个数据类型来表示。我们可以用datahaskell在上面的定义中,是一个泛型类型,它可以存储任意类型的数据。Empty表示空链表,而表示一个节点,其中包含一个值(a)和指向下一个节点的引用(在Haskell中实现单向链表的数据结构是学习函数式编程的重要一步。链表的基本操作如创建、添加、查找、删除和反转为我们提供了丰富的编程实践机会。通过将链表应用于具体的数据结构,如栈和队列,进一步增强了我们对链表的理解。

2501_91195975的博客 506

Haskell 数据分析秘籍(二)

在本章中,我们将介绍以下食谱:哈希原始数据类型哈希自定义数据类型运行流行的加密哈希函数对文件运行加密校验和在数据类型之间进行快速比较使用高性能哈希表使用 Google 的 CityHash 哈希函数对字符串进行哈希计算位置坐标的 Geohash使用布隆过滤器去除唯一项运行 MurmurHash,一个简单但快速的哈希算法使用感知哈希测量图像相似度https://github.com/OpenDocCN/freelearn-ds-pt5-zh/raw/master/docs/hskl-da-cb/img/ch0

龙哥盟 1117

Haskell语言学习笔记(53)Data.Sequence

Data.SequenceConstructionPrelude Data.Sequence> empty fromList [] Prelude Data.Sequence> singleton 3 fromList [3] Prelude Data.Sequence> 3 <| fromList [4,5] fromList [3,4,5] Prelude Data.Sequence> from

zwvista的专栏 641

趣味编程:函数式链表的快速排序(参考答案)

之前我提出了一个“趣味编程”,模仿Haskell的方式对一个链表进行快速排序。在那篇文章中我解释了Haskell列表的结构,并给出了ImmutableList的基础实现。快速排序的例子很多,多做也没有意思。这题虽然打着“快速排序”的旗帜,但事实上这里的关键在于实现ImmutableList数据结构的相关操作——否则为什么叫“函数式链表”的快速排序呢?。 一开始,我提出使用null来表示一

GarfieldEr007的专栏 1146

Haskell语言学习笔记(50)Extra

Extra安装 extra 模块。$ cabal install extra Installed extra-1.6 Prelude> :m +Extra Prelude Extra> Data.List.Extra String operationsPrelude Extra> lower "This is A TEST" "this is a test" Prelude Extra> upper

zwvista的专栏 465
上一篇: haskell Standard list functions(列表的标准库函数)
下一篇: haskell的学习步骤和资料
crazyhacking
博客等级 码龄15年 299粉丝 148原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值