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))
dd5ee1ff4transpose后
Swap
514ddeeff再次进行Transpose1ee4ff5dd降序排列
这种方法有一定的局限性.
推广:针对通用方法进行推广
(define (comp x y) (>= (x n) (y n)));;n为要排序的元素,索引从0开始(sort (Mytable) comp)
0 0
- newLisp中的Hash排序
- ruby中的Hash排序
- newLISP中的字典类型
- newlisp中的if语句
- Perl中的HASH表按value排序输出
- HASH排序
- perl hash 排序
- LA_3213Ancient Cipher( 排序,hash )
- 【Ruby】对Hash排序
- HDU 2523 hash排序
- hdu1425 排序+hash
- (Hash大数排序)Sort
- hash排序的实现
- 剑指offer- hash排序
- 桶排序(hash排序)
- newLISP语法
- newlisp 异常
- newlisp debugger
- JAVA文件中获取该项目的相对路径方法
- asfsafsaf
- 新浪乐居——走进用友软件园活动
- PHP跨数据库事务处理
- spring 定时任务
- newLisp中的Hash排序
- fusioncharts生成图表flash遮挡页面元素的情况
- 加图片型水印
- easyui datagrid自定义按钮列,即最后面的操作列(第二种方法)
- zoj 2587 Unique Attack 网络流
- 传值(一block)
- cocos2d函数
- 关于android打包及签名问题
- 字符串处理笔记-截取字符串