list排序

数据结构(一)

浪尽此生 提交于 2020-02-29 22:14:10
数据结构是什么? 数据结构使指数据之间的关系,包含有逻辑结构和存储结构。 逻辑结构分为线性(一对一),树状(一对多),图状(多对多),集合(无明显对应) 存储要正确反应逻辑 常见的存储类型有vector,list,deque等等 数据结构初入门(排序算法) 推荐几个排序总结博客 各种排序算法总结 排序算法总结——时间复杂度与稳定性 关于排序稳定性的定义 通俗地讲就是能保证排序前两个相等的数其在序列的前后位置顺序和排序后它们两个的前后位置顺序相同。在简单形式化一下,如果Ai = Aj,Ai原来在位置前,排序后Ai还是要在Aj位置前。 1.冒泡排序 先码上代码 # include <iostream> # include <cstdio> # include <cmath> # include <ctime> # include <time.h> # include <algorithm> # include <cstring> using namespace std ; void BubbleSort ( int arr [ ] , int length ) { clock_t start , end ; start = clock ( ) ; for ( int i = 0 ; i < length ; i ++ ) { for ( int j = 0 ; j < length -

Comparison method violates its general contract!

删除回忆录丶 提交于 2020-02-29 09:14:55
在使用spark RDD中,需要进行二次排序,二次排序需要使用到scala List的sortWith(compare),需传递一个比较函数compare给sortWith,这个时候会报如标题所示的错误。 val rdd1 = rdd.groupByKey().sortByKey(true).map(x => (x._1,x._2.toList.sortWith(timeCompare))); 这个错误是jvm1.6和jvm1.7版本不一样带来的bug,来龙去脉参考: Comparison method violates its general contract! 根据参考文档,需要强制jvm使用jdk1.6的数组排序策略,所以需要传递jvm参数,如下: sparkConf.set("spark.executor.extraJavaOptions", "-Djava.util.Arrays.useLegacyMergeSort=true"); 来源: oschina 链接: https://my.oschina.net/u/2260928/blog/650466

python之自定义排序函数sorted()

邮差的信 提交于 2020-02-28 21:31:45
sort方法:   1,sort()是对一个容器(列表)进行排序,无返回值,直接改变容器。   2,sort()能够运用key参数传入一个自定义的函数或者匿名函数(函数只能有一个参数)先对比较的元素进行某种操作,然后根据这个函数的返回值进行排序。   3,key的参数的函数只能是具有一个参数的函数。 内置sorted()函数:   1,sorted()可以对所有的可迭代对象进行排序,有返回值,返回一个按某种规则排序之后的列表。这个规则可以由自己定义。   2,解决了sort()方法第三点指出的不足,可以使用具有两个参数的自定义函数。    sort()方法的定义: def sort(self, key=None, reverse=False): # real signature unknown; restored from __doc__ """ L.sort(key=None, reverse=False) -> None -- stable sort *IN PLACE* """ pass ''' key:用于为每个元素都生成一个比较大小的键,是排序的条件,  可以是:key=int(使用int()函数将元素转换成一个整数进行比较),  key=len(使用len()函数计算每个元素的长度进行比较),   key=lambda..(使用一个自定义的匿名函数对元素进行某种操作

第8章 集合工具类:Collections

这一生的挚爱 提交于 2020-02-27 23:43:58
本章要点: Collections工具类 排序操作 查找、替换操作 同步控制 Collections工具类 java提供了一个操作set、List和Map等集合的工具类:Collections,该工具类里提供了大量方法对集合元素进行排序、查询和修改等操作,还包括将集合对象设置为不可变、对集合对象实现同步控制等方法。 排序操作 Collections提供了如下常用的类方法用于对List集合元素进行排序: void reverse(List list):反转指定List集合中元素的顺序。 void shuffle(List list):对list集合元素进行随机排序(shuffle方法模拟了“洗牌动作”)。 void sort(List list):根据元素的自然顺序对指定List集合的元素按升序进行排序。 void sort(List list, Comparator c):根据指定Comparator产生的顺序对List集合元素进行排序。 void swap(List list, int i, int j):将指定List集合中的i处元素和j处元素进行交换。 void rotate(List list, int distance):当distance为正数时,将list集合的后distance个元素“整体”移到前面:当distance为负数时,向后移。 public class

对自定义的集合进行排序和分页(适合list,map,list)

自作多情 提交于 2020-02-27 18:46:04
//对数据进行排序分页显示 Collections.sort(dataList, new Comparator<Map<String, Object>>() { @Override public int compare(Map<String, Object> o1, Map<String, Object> o2) { Long time1 = Long.parseLong(o1.get("time").toString()); Long time2 = Long.parseLong(o2.get("time").toString()); return time2.compareTo(time1); } }); int userPageCount = dataList.size();//总记录数 int PageCount = (userPageCount + limit - 1) / limit;//总页数 List<Map<String, Object>> list = new ArrayList<>(); if (userPageCount != 0&&page<=PageCount&&page>0) { for (int i = 0; i < userPageCount; i++) { if (((page-1)*10)<=i&&i<page*limit){ list.add

「算法」按奇偶排序数组 & 按奇偶排序数组II

◇◆丶佛笑我妖孽 提交于 2020-02-27 09:23:40
00905 按奇偶排序数组 题目描述 给定一个非负整数数组 A ,返回一个数组,在该数组中 A 的所有偶数元素之后跟着所有奇数元素。 你可以返回满足此条件的任何数组作为答案。 示例: 输入:[3,1,2,4] 输出:[2,4,3,1] 输出 [4,2,3,1],[2,4,1,3] 和 [4,2,1,3] 也会被接受。 提示: 1 <= A.length <= 5000 0 <= A[i] <= 5000 力扣地址 https://leetcode.com/problems/sort-array-by-parity/ https://leetcode-cn.com/problems/sort-array-by-parity/ <!-- more --> 解题报告 两遍扫描 本题解由微信公众号 小猿刷题 提供, 错误之处, 欢迎指正. 第一遍扫描输出偶数, 第二遍扫描输出奇数. /** * 微信公众号"小猿刷题" */ class Solution { public int[] sortArrayByParity(int[] A) { int[] list = new int[A.length]; int t = 0; for (int i = 0; i < A.length; i++) { if (A[i] % 2 == 0){ list[t++] = A[i]; } } for

Specification排序orderby

本小妞迷上赌 提交于 2020-02-27 08:43:44
废话不多说直接贴代码 Specification < Course > sf = new Specification < Course > ( ) { @Override public Predicate toPredicate ( Root < Course > root , CriteriaQuery < ? > criteriaQuery , CriteriaBuilder criteriaBuilder ) { List < Predicate > predicateList = Lists . newArrayList ( ) ; //isDelete Predicate isDeletePredicate = criteriaBuilder . equal ( root . get ( "isDelete" ) , Constant . NOT_DELETE ) ; predicateList . add ( isDeletePredicate ) ; //isShelves Predicate isShelvesPredicate = criteriaBuilder . equal ( root . get ( "isShelves" ) , Constant . COURSE_SHELVES_YES ) ; predicateList . add (

MFC 列表控件CListCtrl详解

笑着哭i 提交于 2020-02-27 04:58:28
CListCtrl::SetExtendedStyle CListCtrl的成员函数声明   DWORD SetExtendedStyle(   DWORD dwNewStyle );   函数功能设置CListCtrl的扩展样式   dwNewStyle指定的扩展样式   LVS_EX_GRIDLINES //绘制表格,网格线。   LVS_EX_SUBITEMIMAGES//子项目图标列表   LVS_EX_CHECKBOXES //带复选框   LVS_EX_TRACKSELECT //自动换行   LVS_EX_HEADERDRAGDROP//报表头可以拖拽   LVS_EX_FULLROWSELECT //选择整行,允许选择整行。   LVS_EX_ONECLICKACTIVATE//单击激活单击选中项目。   LVS_EX_TWOCLICKACTIVATE//双击激活   LVS_EX_FLATSB//扁平滚动条   LVS_EX_REGIONAL   LVS_EX_INFOTIP   LVS_EX_UNDERLINEHOT   LVS_EX_UNDERLINECOLD   LVS_EX_MULTIWORKAREAS//多工作区 ---------------------------------- 例子:m_TextList.SetExtendedStyle(...);

按多个属性对列表进行排序?

◇◆丶佛笑我妖孽 提交于 2020-02-27 03:43:45
我有一个清单清单: [[12, 'tall', 'blue', 1], [2, 'short', 'red', 9], [4, 'tall', 'blue', 13]] 如果我想按一个元素(例如,高/短元素)进行排序,则可以通过 s = sorted(s, key = itemgetter(1)) 。 如果我想用 又 高/短,颜色排序,我可以为每个元素做排序两次,一次,但有一个更快的方法? #1楼 我不确定这是否是最pythonic的方法...我有一个元组列表,需要按降序对整数值进行排序,然后按字母顺序对第二个进行排序。 这需要反转整数排序,而不是字母排序。 这是我的解决方案:(在一次考试中,我什至不知道您可以“嵌套”排序功能) a = [('Al', 2),('Bill', 1),('Carol', 2), ('Abel', 3), ('Zeke', 2), ('Chris', 1)] b = sorted(sorted(a, key = lambda x : x[0]), key = lambda x : x[1], reverse = True) print(b) [('Abel', 3), ('Al', 2), ('Carol', 2), ('Zeke', 2), ('Bill', 1), ('Chris', 1)] #2楼 键可以是返回元组的函数: s = sorted

STL算法积累(二)

做~自己de王妃 提交于 2020-02-26 23:02:21
C++ sort stable_sort partial_sort nth_element is_sorted is_sorted_until [1]C++ sort(STL sort)排序算法详解 //默认升序 1.1 在很多应用中,排序都是至关重要的,而且很多 STL 算法也只适用于有序对象序列。定义在 algorithm 头文件中的函数模板 sort<Iter>() 默认会将元素段排成升序,这也就意味着 排序的对象的类型需要支持 < 运算符。 1.2 对象也必须是可交换的,这说明可以用定义在 utility 头文件中的函数模板 swap() 来对两个对象进行交换。这进一步表明这种对象的类型需要实现移动构造函数和移动赋值运算符。 1.3 函数模板 sort<Iter>() 的类型参数 Iter 是元素段元素对应的迭代器类型,而且它们必须支持随机访问迭代器。这表明 sort() 算法只能对提供随机访问迭代器的容器中的元素进行排序, 也说明 sort() 只能接受 array、vector、deque 或标准数组中的元素。可以回顾前面章节,list 和 forward_list 容器都有成员函数 sort(); 这些用来排序的特殊成员函数是必要的, 因为 list 只提供双向迭代器,且 forward_list 只提供正向迭代器。 可以从函数调用的参数中推导出 sort()