newLisp中的Hash排序

来源:互联网 发布:ubuntu查看共享文件夹 编辑:程序博客网 时间:2024/05/17 21:39

newlisp中可以利用Hash functions 来实现某些特定数据出现次数的统计,如

(new Tree 'MyHash)  (if (Myhash y)      (Myhash y (+ (Myhash y) 1))      (Myhash y 1)) 

统计完成后如何根据数据出现的次数进行排序呢? newlisp中没有实现根据value值进行排序的封装方法,因此也需要一些额外的操作来实现。

   (Mytable "dd" 5)    (Mytable "ff"  4)    (Mytable "ee" 1)   (Mytable "ff") <  4   (Mytable)<  ((“dd” 5)(“ee” 1)(“ff” 4))

由上操作可以看出,newlisp中Hash的存储是以二层列表的模式进行存储,同时默认对key进行升序排列。下面则根据value值进行排序:

第一种(通用类型)

  (define (comp x y )(>= (last x) (last y)))  (sort (Mytable) comp)< (("dd" 5 )("ff" 4)("ee" 1)) 

第二种,由于刚开始学学习newlisp不是很熟练,采用了包含行列式变换在内的操作处理后进行排序。

 (set 'l (Mytable)) (set 'middle-var (transpose l)) ;;进行transpose换位 (swap (middle-var 0) (middle-var 1)) ;;交换middle-var的两个元素 (set 'sort-list (sort (transpose middle-var) >));;再次进行transpose换位,最后进行降序排列。
图解:
(Mytable) -->((“dd” 5)(“ee” 1)(“ff”4))
dd5ee1ff4

transpose后
ddeeff514

Swap

514ddeeff再次进行Transpose

1ee4ff5dd

降序排列
5dd4ff1ee

这种方法有一定的局限性.

推广:针对通用方法进行推广

(define (comp x y) (>= (x n) (y n)));;n为要排序的元素,索引从0开始(sort (Mytable) comp) 
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 华为微信运动步数为零怎么办 淘宝店铺没货了客户拍了怎么办 房子涨价了卖家反悔不卖了怎么办 买的东西很贵质量不好怎么办 在淘宝开的店账号忘了怎么办 建了个淘宝优惠券群没人购物怎么办 刚开的淘宝店没有生意怎么办 房产代理公司不给渠道结佣金怎么办 天猫超过72小时不发货怎么办 流量魔盒苹果下载怎么打不开怎么办 淘宝包邮店铺新疆地区拍怎么办 淘宝客服当顾客要优惠时怎么办 微信手机号注册的找不到了怎么办 之前注册的微信找不到了怎么办 苹果ipad的id密码忘了怎么办 淘宝和支付宝用一张银行卡怎么办 淘宝卖家填写虚假物流信息怎么办 淘宝店铺的浏览量越来越少怎么办 网上充手机话费充错了怎么办 夜神模拟器上陌陌的位置不对怎么办 如果在大庭广众之下放了个屁怎么办 淘宝分销上传宝贝被系统下架怎么办 酷狗喜欢歌单里面的歌都没了怎么办 苹果手机下载不了微信缓冲怎么办 登陆微信提示版本过低登不了怎么办 苹果手机微信版本过低登不上怎么办 微信小程序显示微信版本过低怎么办 三星手机登微信显示版本过低怎么办 微信版本低无法登录无法升级怎么办 手机淘宝五应用界面无法打开怎么办 入住淘宝主播没有微博粉丝怎么办 手机淘宝领金币怎么没有了怎么办 淘宝荬家缺货对付款买家怎么办 淘宝买家确认收货后申请退款怎么办 淘宝东西失效了但付过款了怎么办 淘宝图片被投诉盗图怎么办原图没了 淘宝退款申请不小心撤销了怎么办 淘宝不小心点了撤销退款怎么办 淘宝上退款不小心撤销了怎么办 新店淘宝卖家想开通直播怎么办 想开通淘宝直播却没有粉丝怎么办