haskell排序的操作

进阶篇第8节:寄存器压力——寄存器溢出对性能的影响及优化 **摘要:GPU寄存器是最快的存储单元(1周期访问),但数量有限。过高的寄存器使用会导致溢出(变量存入慢速本地内存)或降低占用率(减少并发线程数),严重影响性能。优化方法包括复用变量、使用共享内存替代寄存器数组、限制寄存器数量(--maxrregcount)等。实际测试显示,将寄存器使用从48个降至24个可使性能提升37%。分析工具如Nsight Compute可帮助检测寄存器压力。面试常见问题涉及寄存器溢出的检测与优化策略。 阅读详情

注意处理相同的元素

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

39、FIPA ACL:多代理系统中的标准化通信 本文详细介绍了FIPA ACL(Agent Communication Language)的基本概念、言语行为理论基础以及其在多代理系统(MAS)中的应用。文章涵盖了FIPA ACL的消息格式、信息交流流程、实现与优化方法,并通过智能调度系统的实例展示了其实际应用效果。此外,还探讨了FIPA ACL面临的挑战及未来发展方向,如通信延迟优化、本体简化、安全性增强等。 阅读详情

相关推荐

<工控><PLC>汇川Easy521系列PLC与汇川SV630N伺服进行EtherCat通讯的相关配置及指令编写

本系列是关于PLC相关的博文,包括PLC编程、PLC与上位机通讯、PLC与下位驱动、仪器仪表等通讯、PLC指令解析等相关内容。PLC品牌包括但不限于西门子、三菱等国外品牌,汇川、信捷等国内品牌。除了PLC为主要内容外,PLC相关元器件如触摸屏(HMI)、交换机等工控产品,如果有值得记录的内容,也会添加进来。

用沸腾的热血,支付我们的人生吧! 2万+

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

Redmi K30 5G刷 LineageOS17.1

前言 买手机前就观望了Xdr论坛,看Redmi K30 5G有LineageOS17.1的Rom并且还挺热,应该还不错,就入手了。晚上就刷机了。买了小米就是为了折腾,为发烧而生。 在开始前还请先安装adb工具,因为我自己是做Android开发的,自带adb,不会安装的可以百度“Android安装adb工具”。还有下载刷机文件:百度云 密码:2a0f 刷机的系统是刚买来的低版本,没有升级过Rom,如果高版本慎刷。 还有这个Rom是5G版本的,4G版本的不要刷。 建议没有刷过机器的最好不要尝试,变砖后果自负。

u010436867的博客 1万+

Haskell学习-常见排序算法

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

weixin_30642869的博客 435

基于RYU+Mininet的SDN校园网络实战:从零搭建虚拟化实验环境

本文详细介绍了如何利用RYU控制器和Mininet搭建SDN校园网络实验环境,从Ubuntu虚拟机准备到网络拓扑设计,再到关键网络功能实现。通过实战案例展示SDN在校园网络中的应用优势,包括简化配置、提升效率等,为网络工程师和学生提供了一套完整的虚拟化实验方案。

weixin_30872499的博客 455

WorkVisual传输程序报错_发现一个内部错误

WorkVisual传输程序报错_发现一个内部错误

qq_16401025的博客 2453

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

戴尔G3/AWCC用户必看:揪出WMI Provider Host疯狂占用的元凶,附5.4.35旧版回退保姆级教程

本文针对戴尔G3/AWCC用户遇到的WMI Provider Host异常占用问题,提供了详细的诊断方法和解决方案。通过分析AWCC 5.5.14.0版本的资源占用问题,指导用户回退到稳定版AWCC 5.4.35,并附上保姆级教程和预防措施,帮助用户彻底解决系统卡顿问题。

weixin_30892037的博客 561

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

倍加福(P+F)R2000修改雷达IP

在调试车子的时候,用到了倍加福R2000的一款雷达,设备启动建图时发现建不了图,于是查看/scan发现话题无数据,尝试ping雷达接口发现ping不通,应该是IP地址与上位机端口的IP地址不对。首先查看雷达的IP地址,这个在雷达上有两个按键,按下后可以显示IP: 按两下右边的键再按一下左边的键雷达上会显示出IP号,这里拍的不是很清楚。查看到开始时雷达IP地址为192.168.111.10,而上位机ping的IP地址为192.168.188.50.与实际不同,所以需要对雷达进行配置。一台windows笔记本

YiYeZhiNian的博客 5890

(七)独立按键

(七)独立按键

m0_52555663的博客 1713

Haskell语言的链表排序

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

2501_91314476的博客 603

一文掌握 Playwright 的详细使用

Playwright 是一个功能强大的浏览器自动化工具,适用于网页自动化测试、数据抓取和网页交互。通过掌握其基础用法和高级功能,你可以轻松实现各种浏览器自动化任务。Playwright 支持多浏览器、多语言,并且具有高效的异步操作能力,是现代浏览器自动化的首选工具之一。

数据知道的博客 1万+

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语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Haskell:如何类型化快速排序

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

WinterShiver 324

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

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

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

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、付费专栏及课程。

余额充值