list排序

Task 3:排序 + 二分查找 (3天)

随声附和 提交于 2019-11-27 03:45:48
一、 【排序】 实现归并排序、快速排序、插入排序、冒泡排序、选择排序、堆排序(完成leetcode上的返回滑动窗口中的最大值(239),这是上一期第三天的任务进行保留(涉及队列可以对第二天进行整理复习)) 归并排序: def merge(a, b): c = [] h = j = 0 while j < len(a) and h < len(b): if a[j] < b[h]: c.append(a[j]) j += 1 else: c.append(b[h]) h += 1 if j == len(a): for i in b[h:]: c.append(i) else: for i in a[j:]: c.append(i) return c def merge_sort(lists): if len(lists) <= 1: return lists middle = len(lists)/2 left = merge_sort(lists[:middle]) right = merge_sort(lists[middle:]) return merge(left, right) if __name__ == '__main__': a = [4, 7, 8, 3, 5, 9] print merge_sort(a) 快速排序: data = [45,3,2,6,3,78

C# 使用Shlwapi.dll 进行文件排序

妖精的绣舞 提交于 2019-11-27 02:57:31
C# 使用Shlwapi.dll 进行文件排序 代码 使用 代码 public class FileComparer : IComparer<string> { [System.Runtime.InteropServices.DllImport("Shlwapi.dll", CharSet = System.Runtime.InteropServices.CharSet.Unicode)] public static extern int StrCmpLogicalW(string psz1, string psz2); public int Compare(string psz1, string psz2) { return StrCmpLogicalW(psz1, psz2); } } 使用 List list = FileList.OrderBy(x => x.Replace(“ END ”, " "), new FileComparer()).ToList(); 这样的排序和资源管理器中的排序规则一致 来源: https://blog.csdn.net/h453802269/article/details/99300603

C#中汉字按照首字拼音排序

余生长醉 提交于 2019-11-27 02:24:34
string[] arr = { "熊德舞", "欧阳修", "盛军", "舞阳", "阿史那","陈吉利" }; //姓名按照拼音排序 Array.Sort(arr); 排序后效果: - arr {string[6]} string[] [0] "阿史那" string [1] "陈吉利" string [2] "欧阳修" string [3] "盛军" string [4] "舞阳" string [5] "熊德舞" string 如果是集合,则排序一样的很简单,执行效果还是按照汉字首字拼音排序的 List<ViewModel> list = new List<ViewModel>(); list.Add(new ViewModel() { guid="1",title= "熊德舞" }); list.Add(new ViewModel() { guid = "2", title = "欧阳修" }); list.Add(new ViewModel() { guid = "3", title = "盛军" }); list.Add(new ViewModel() { guid = "4", title = "舞阳" }); list.Add(new ViewModel() { guid = "5", title = "阿史那" }); list.Add(new

Linq入门(二)

China☆狼群 提交于 2019-11-27 01:52:11
/*--> */ /*--> */ /*--> */ /*--> */ 1. 隐式类型的局部变量 隐式类型的变量声明使用var关键字,并且注意是局部变量。var关键字指示编译器根据初始化右侧的表达式推断变量的类型。编译器通过var能够推断的类型可以试内置类型、匿名类型、用户定义类型或.NET Framework中定义的类型,但这并不代表var声明的变量是弱类型,C#中的var和javascript中的var不一样。 var只是为我们提供了语法上的便利,在平常使用时还是尽量使用强类型,毕竟强类型可读性较强。 下面一个简单的例子 演示了var声明局部变量 的各种方式: /// ///<Summary>通过var声明的变量都是由编译器来推断其类型</Summary> /// //i被编译时int类型 var i = 5; //s被编译为string类型 var s = "Sunny"; //a被编译为int[]类型 var a = new[] { 0, 1, 2 }; //expr被编译为IEnumerable<Customer>类型 var expr = from c in customers where c.City == "London" select c; //anon被编译为匿名类类型 var anon = new { Name = "Sunny", Age = 22 }; /

python中列表排序,字典排序,列表中的字典排序

你。 提交于 2019-11-27 01:08:03
python中列表排序,字典排序,列表中的字典排序 #-*- encoding=utf-8 -*- # python3代码 import operator 一. 按字典值排序(默认为升序) x = {1:2, 3:4, 4:3, 2:1, 0:0} 1. sorted_x = sorted(x.iteritems(), key=operator.itemgetter(1)) print sorted_x #[(0, 0), (2, 1), (1, 2), (4, 3), (3, 4)] #如果要降序排序,可以指定reverse=True 2. sorted_x = sorted(x.iteritems(), key=operator.itemgetter(1), reverse=True) print sorted_x #[(3, 4), (4, 3), (1, 2), (2, 1), (0, 0)] 二. 或者直接使用list的reverse方法将sorted_x顺序反转 #sorted_x.reverse() 三. 更为常用的方法是,用lambda表达式 3. sorted_x = sorted(x.iteritems(), key=lambda x : x[1]) print sorted_x #[(0, 0), (2, 1), (1, 2), (4, 3), (3, 4)]

freemarker中对null值问题的处理

老子叫甜甜 提交于 2019-11-27 00:47:10
1. freemarker不支持null。 如果值为null会报错。 2.当值为null的处理 1)过滤不显示 Hello ${name!} 在属性后面加感叹号即可过滤null和空字符串 if和”??“ <#if age??> 无年龄值 <#/if> $和! ${age!'0'} 如果age为null,默认给'0' 2)设置默认值 如${student1.user!"null"} 3)判断是否存在值 $stduent.user?if_exists} 这样显示就没有问题了 if判断null处理 ========================================================================= freemarker对null的处理 无非就这几种 1 提供默认值 <#if mouse?> Mouse found <#else> 也可以直接${mouse?if_exists} <#if user.age??> //TO DO </#if> 2.忽略null值 假设前提:userName为null ${userName} error ${userName!} 空白 ${userName!'tivon'} tivon 假设前提:user.name为null ${user.name},异常 ${(user.name)!},显示空白 ${user

List对象排序通用方法

寵の児 提交于 2019-11-26 21:49:40
List对象排序通用方法 在数据库中查出来的列表中,往往需要对不同的字段重新排序,一般的做法都是使用排序的字段,重新到数据库中查询。如果不到数据库查询,直接在第一次查出来的list中排序,无疑会提高系统的性能。 只要把第一次查出来的结果存放在session中,就可以对list重新排序了。一般对list排序可以使用Collections. sort (list),但如果list中包含是一个对象的话,这种方法还是行不通的。如果有下面这个对象: 这是一个简单的数据对象,现在要对 1 // UserInfo.java 2 package test; 3 4 import java.text.SimpleDateFormat; 5 6 7 public class UserInfo implements java.io.Serializable{ 8 9 private java.lang.Integer userId; 10 private java.lang.String username; 11 private java.util.Date birthDate; 12 private java.lang.Integer age; 13 14 private SimpleDateFormat formater = new SimpleDateFormat("yyyy-MM-dd" );

内置函数——sorted

你。 提交于 2019-11-26 20:29:16
内置函数——sorted 对List、Dict进行排序,Python提供了两个方法 对给定的List L进行排序, 方法1.用List的成员函数sort进行排序,在本地进行排序,不返回副本 方法2.用built-in函数sorted进行排序(从2.4开始),返回副本,原始输入不变 --------------------------------sorted--------------------------------------- sorted(iterable, key=None, reverse=False) Return a new list containing all items from the iterable in ascending order. A custom key function can be supplied to customise the sort order, and the reverse flag can be set to request the result in descending order. ----------------------------------------------------------------------------- 参数说明: iterable:是可迭代类型; key:传入一个函数名

Java学习:常用函数接口

杀马特。学长 韩版系。学妹 提交于 2019-11-26 20:01:53
常用函数接口 什么是函数式接口?   函数式接口, @FunctionalInterface,简称FI ,简单的说,FI就是指仅含有一个抽象方法的接口,以@Functionalnterface标注 注意: 这里的抽象方法指的是该接口自己特有的抽象方法,而不包含它从其上级继承过来的抽象方法,例如: @FunctionalInterface Interface FI{ abstract judge(int a); abstract equals(); } 上面这个接口尽管含有两个抽象方法,但是它仍然是一个FI,因为equals抽象方法是其从超类Object中继承的(当然这里的“接口继承超类Object”的说法很有争议,但是不妨碍咱们这里拿来理解FI这个概念) Java8中常用的全新的接口 Predicate接口 Predicate 接口只有一个参数,返回boolean类型。该接口包含多种默认方法来将Predicate组合成其他复杂的逻辑(比如:与,或,非): 代码如下: Predicate<String> predicate = (s) -> s.length() > 0; predicate.test("foo"); // true predicate.negate().test("foo"); // false Predicate<Boolean> nonNull =

Comparator进行List集合排序

别来无恙 提交于 2019-11-26 19:53:10
对数据库中查询到的结果进行排序,一般开发中,实体类是没有实现 Comparable接口的,所以不能实现 compareTo()方法进行排序, 只能用 Comparator去进行排序,只需要在带排序的集合中加入以下代码就能实现排序功能了。compare比较的o1和o2,返回值大于0,则o1大于o2,返回值等于0,则o1等于o2。 Collections.sort(clientCircleList,new Comparator<ClientCircle>(){ @Override public int compare(ClientCircle o1, ClientCircle o2) { if(o2.getUid() > o1.getUid()){ return 1; } if(o2.getUid() == o1.getUid()) { return (int) (o2.getId() - o1.getId()); } return -1; } });for (ClientCircle clientCircle : clientCircleList) { System.out.println("UID: "+clientCircle.getUid()+ "+ID: " + clientCircle.getId());} 比较UId的大小,相同则继续计较ID的大小,结果如下: 来源: