文档章节

C# Sort 多层排序 lambda 递归

捍卫机密
 捍卫机密
发布于 2017/05/12 16:57
字数 284
阅读 16
收藏 0
点赞 0
评论 0
C#

 

 





/// <summary>
/// list静态方法入口
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="self"></param>
/// <param name="l"></param>
/// <returns></returns>
public static IList<T> SortX<T>(this IList<T> self, Func<T, T, int>[] l)
{
var ls = self.ToList();
ls.Sort((x, y) => { return SortMulti(x, y, l, 0); });
return ls;
}

/// <summary>
/// 递归多层排序方法,类似sort((x,y)=>{ return X;})的数组版本;
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="x"></param>
/// <param name="y"></param>
/// <param name="l"></param>
/// <param name="i"></param>
/// <returns></returns>
public static int SortMulti<T>(T x, T y, Func<T, T, int>[] l, int i)
{
var maxLen = l.Length - 1;
if (i > maxLen)
{
    return 0;
}
else
{
    var xr = l[i](x, y);
    return xr != 0 ? xr : SortMulti(x, y, l, i + 1);
}
}


// 这是个 运行样例 参数构成 关键在 排序具体计算的定义
// new Func<Tuple<int, int>, Tuple<int, int>, int>[] { 
//     (x, y) => { return x.Item1.CompareTo(y.Item1); }, 
//     (x, y) => { return x.Item2.CompareTo(y.Item2); }
// }
// 运行样例整体
xl.SortX<Tuple<int, int>>(new Func<Tuple<int, int>, Tuple<int, int>, int>[] { (x, y) => { return x.Item1.CompareTo(y.Item1); }, (x, y) => { return x.Item2.CompareTo(y.Item2); } });


// 这里跟一个 别人写的 递归lambda 斐波那契递归,以上方法参考这个写法。但是实际上没有用这种方法还是用的函数
public static Func<int, int> Fibonacci = n => n > 1 ? Fibonacci(n - 1) + Fibonacci(n - 2) : n;

 

© 著作权归作者所有

共有 人打赏支持
捍卫机密
粉丝 3
博文 114
码字总数 34202
作品 0
成都
程序员
python dict按照value 排序

我们知道Python的内置dictionary数据类型是无序的,通过key来获取对应的value。可是有时我们需要对dictionary中 的item进行排序输出,可能根据key,也可能根据value来排。到底有多少种方法可...

飞翔的单车 ⋅ 2014/09/03 ⋅ 0

Java8 Lambda表达式之比较器

在这个例子中,我将向你展示如何使用Java8的lambda表达式写的比较器排序列表。 经典例子 Lambda表达式方式 1. 使用Lambda排序 这个例子使用年龄比较对象,通常你使用并且通过一个匿名函数实现...

王爵nice ⋅ 2015/09/15 ⋅ 0

python dict按照value 排序

我们知道Python的内置dictionary数据类型是无序的,通过key来获取对应的value。可是有时我们需要对dictionary中 的item进行排序输出,可能根据key,也可能根据value来排。到底有多少种方法可...

scroll ⋅ 2013/04/01 ⋅ 0

Python中 字典排序、列表排序

一、字典排序 在程序中使用字典进行数据信息统计时,由于字典是无序的所以打印字典时内容也是无序的。因此,为了使统计得到的结果更方便查看需要进行排序。Python中字典的排序分为按“键”排...

oanyt ⋅ 2015/07/22 ⋅ 0

Python中 字典排序、列表排序

一、字典排序 在程序中使用字典进行数据信息统计时,由于字典是无序的所以打印字典时内容也是无序的。因此,为了使统计得到的结果更方便查看需要进行排序。Python中字典的排序分为按“键”排...

duhaizhang ⋅ 2012/08/06 ⋅ 0

整理一下py的sort

对List进行排序,Python提供两个方法 对给定的List L进行排序, 方法1.用List的成员函数sort进行排序 方法2.用built-in函数sorted进行排序(从2.4开始) 这两种方法使用起来差不多,以第一种...

捍卫机密 ⋅ 2016/12/27 ⋅ 0

Python list排序

一、 python提供的对list进行排序的方法 1、方法: (1)list的内建函数list.sort进行排序, (2)用序列类型函数sorted(list)进行排序。 2、示例: >>> alist = [2,5,4,3,1] >>> alist [2, ......

雪之丞 ⋅ 2014/12/15 ⋅ 0

Python中排序常用到的sort 、sorted和argsort函数

Python中排序常用到的sort 、sorted和argsort函数 [摘要:Python中sort 战 sorted函数 一 、先容 sort函数是list列表中的函数,而 sorted能够对list或iterator举行排序 2、sort战sorted的比拟...

Airship ⋅ 2016/08/11 ⋅ 0

python函数式编程

1, lambda lambda可以创建匿名函数,一个完整的lambda表达式格式如下: lambda [arg1[, arg2, ... argN]]: 返回值 lambda表达式返回一个可调用的函数对象。 >>> func = lambda x:x*2>>> func<......

Si2 ⋅ 2014/01/27 ⋅ 0

在Python中使用lambda高效操作列表的教程

转自 http://www.jb51.net/article/64833.htm lambda Python用于支持将函数赋值给变量的一个操作符 默认是返回的,所以不用再加return关键字,不然会报错 需要两个参数,第一个是一个处理函数,...

lizer2016 ⋅ 2016/08/02 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

JPA入门,配置文件的设置

<?xml version="1.0" encoding="UTF-8"?> <persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http......

码农屌丝 ⋅ 23分钟前 ⋅ 0

Java基础——面向对象和构造器

声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记。 静态成员介绍 为什么要有静态成员?静态成员用来...

凯哥学堂 ⋅ 24分钟前 ⋅ 0

vmware中Centos 7 linux的LVM磁盘扩容

系统是RHEL7(centos7差不多一样) 关闭系统,在vmware、设置、硬盘、扩展、输入数字大于当前系统内存、点击扩展。 开机再查看磁盘信息 fdisk -l 注意:可以看出sda磁盘增加了,但是根目录还...

gugudu ⋅ 35分钟前 ⋅ 0

JAVA线程sleep和wait方法区别

昨天面试,突然被问到sleep 和 wait的区别,一下子有点蒙,在这里记一下,以示警戒。 首先说sleep,sleep就是正在执行的线程主动让出cpu,cpu去执行其他线程,在sleep指定的时间过去后,cpu...

徐玉强 ⋅ 37分钟前 ⋅ 0

vuex学习--模块

随着项目复杂性增加,共享状态也越来越多。需要对转态操作进行分组,分组后在进行分组编写。学习一下module:状态管理器的模块组操作。 首先是声明: const moduleA={ state,mutations,g...

大美琴 ⋅ 39分钟前 ⋅ 0

Selenium 简单入门

安装 pip install selenium 驱动下载 https://chromedriver.storage.googleapis.com/index.html 下载最新的驱动,放入path中,可以放入Python的scripts目录下,也可以放入Chrome安装目录,并...

阿豪boy ⋅ 41分钟前 ⋅ 0

292. Nim Game - LeetCode

Question 292. Nim Game Solution 思路:试着列举一下,就能发现一个n只要不是4的倍数,就能赢。 n 是否能赢1 true2 true3 true4 false 不论删除几,对方都能一把赢5 t...

yysue ⋅ 今天 ⋅ 0

6.5 zip压缩工具 6.6 tar打包 6.7 打包并压缩

zip压缩工具 zip命令可以压缩目录和文件,-r 压缩目录。 zip使用方法 zip 1.txt.zip 1.txt //压缩文件 zip -r 123.zip 123/ //压缩目录 unzip 1.txt.zip //解压 unzip 123.zip -d /root/456...

Linux_老吴 ⋅ 今天 ⋅ 0

react-loadable使用跳坑

官方给react-loadable的定义是: A higher order component for loading components with dynamic imports. 动态路由示例 withLoadable.js import React from 'react'import Loadable fro......

pengqinmm ⋅ 今天 ⋅ 0

记录工作中遇到的坑

1、ios safari浏览器向下滚动会触发window resize事件

端木遗风 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部