list排序

List排序问题

萝らか妹 提交于 2020-01-02 00:09:28
在unity中常用到的排序<unity目前使用.net2.0,实际项目中使用的还是2.0子集>。目前还不能.net提供的扩展方法。那只有自己动手了。 下面举例用一个类来存储简单的数据吧 class Tdata {   privte int id;   privte GameObject obj;   public int ID{get;set;}   public GameObject Obj{get;set;} } void MySort() { List<Tdata> list = new List<Tdata>(); list.Add(new Tdata{ID = 5,Obj = cube1}); list.Add(new Tdata{ID = 3,Obj = cube2}); list.Add(new Tdata{ID = 6,Obj = cube0}); //这里用link 来排序,根据实际需要选择用哪个属性来排序。 IEnumerable<Tdata> data = from items in list orderby items.ID select items; //根据ID排序完毕,接下来就操作排序完的集合吧。 } 来源: https://www.cnblogs.com/sling/p/3974059.html

c# List的排序

徘徊边缘 提交于 2020-01-02 00:09:12
list 是我们常用到的数据类型,我们常常会用list去处理很多的数据。我们也常常会有这样的一个操作,就是排序sort list 所在的命名空间是System.Collections.Generic 排序的方式 一 对于基本的数据类型,本身又icompare的继承的我们可以直接使用list.sort();进行升序排列。不需要做任何操作   如 我们定义     List<int> testList = new List<int>();     testList.Add(2);     testList.Add(1); testList.Add(3); testList.Add(4); testList.Add(5); testList.Add(0); 直接使用testList.sort();就能得到 012345的序列 二 自己定义比较方法,这是我比较常用的,可以对多个条件进行比较,很容易进行扩展 private int SortList(int a,int b) //a b表示列表中的元素 {   if(a > b) //这边的比较可以是任意的类型,只要是你可以比较的东西,比如student类中的年龄age stu1.age > stu2.age   {     return 1;   }   else if (a < b)   {     return -1;   } 

java的集合框架最全详解

不想你离开。 提交于 2020-01-01 15:13:07
java的集合框架最全详解(图) 前言: 数据结构对程序设计有着深远的影响,在面向过程的C语言中,数据库结构用struct来描述,而在面向对象的编程中,数据结构是用类来描述的,并且包含有对该数据结构操作的方法。 在Java语言中,Java语言的设计者对常用的数据结构和算法做了一些规范(接口)和实现(具体实现接口的类)。所有抽象出来的数据结构和操作(算法)统称为Java集合框架(JavaCollectionFramework)。 Java程序员在具体应用时,不必考虑数据结构和算法实现细节,只需要用这些类创建出来一些对象,然后直接应用就可以了,这样就大大提高了编程效率。 1. 先说Set和List: 1.1. Set子接口:无序,不允许重复。List子接口:有序,可以有重复元素。具体区别是 Set:检索元素效率低下,删除和插入效率高,插入和删除不会引起元素位置改变。<对应类有 HashSet,TreeSet> List:和数组类似,List可以动态增长,查找元素效率高,插入删除元素效率低,因为会引起其他元素位置改变。<相应类有 ArrayList,LinkedList,Vector> Set和List具体子类: 2.2. < 实例比较> HashSet:以哈希表的形式存放元素,插入删除速度很快。 ArrayList:动态数组,LinkedList:链表、队列、堆栈。

23. 合并K个排序链表

左心房为你撑大大i 提交于 2019-12-30 02:58:08
23. 合并K个排序链表 题目描述 合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。 示例: 输入: [ 1->4->5, 1->3->4, 2->6 ] 输出: 1->1->2->3->4->4->5->6 实现1 每次取出两个链表,合并成一个 /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ class Solution { public ListNode mergeKLists ( ListNode [ ] lists ) { if ( lists == null || lists . length == 0 ) { return null ; } ListNode res = lists [ 0 ] ; for ( int i = 1 ; i < lists . length ; i ++ ) { res = insert ( res , lists [ i ] ) ; } return res ; } public ListNode insert ( ListNode list , ListNode list2 ) { if ( list

排序(python)

我的未来我决定 提交于 2019-12-28 05:03:52
1 # 冒泡算法:是一种简单排序,重复的遍历要排序的数列,一次比较两种元素,如果顺序错误,就交换两者的位置,重复的的进行知道没有在需要交换 2 # 步骤如下: 3 # 冒泡排序算法的运作如下: 4 # 第一次进行遍历,进行n-1次两两比较,将最大(小)的元素,进行放入最后一位,下一次,对前n-2的元素进行两两进行比较.放入最后第二位.... 5 # 时间复杂度为:(稳定) 6 # 最小为o(n),即该序列的有序的序列,最大为o(n),即,第一次要n-1,n-2,n-3...即最大为o(n^2) 7 import random 8 def produce_num(n): 9 return_nums=[] 10 for i in range(n): 11 num=random.randint(1,n) 12 return_nums.append(num) 13 return return_nums 14 def bubble_sort_high(list_): 15 # 进行升序排序 16 # 控制循环轮数 17 for i in range(len(list_)-1): 18 # 每一次遍历,两两比较,得到最大(小)的元素放入,当前循环长度的最后一位 19 for j in range(len(list_)-i-1): 20 # 如果取出的元素大于剩余的元素,则进行交换元素 21

排序学习PointWise、PairWise、ListWise

…衆ロ難τιáo~ 提交于 2019-12-28 04:49:37
视频没有讲清楚,后面写的不好,还是贴上别人的博客吧,讲的很清楚: https://blog.csdn.net/anshuai_aw1/article/details/86018105 方便以后自己查阅 排序学习 —— 通过机器学习的方法帮助排序 最早用于信息检索,比如给定搜索的内容,返回相应的文档,那么如何决定返回文档的顺序呢?这就需要排序学习~ PointWise: 在PointWise方法下,每个item对应于一个类别,排序问题就可以被看成是一个分类问题。 一般来说,每个item会被转化成特征向量,向量里包含一些特征,比如PageRank分数,关键字出现次数等信息,将特征向量输入分类器(如SVM、逻辑回归、感知机等),就能得到一个分数,通过分数就能得到最终的排序列表。 优势 :在于其直接支持已有的回归或者分类的理论和算法。 缺点 :由于是分类问题,被分为同一类的文档会丢失次序信息。 例子 :例子中使用了均方误差作为损失函数,实际中还可以使用交叉熵等其他loss。 PairWise: 核心思想:如果知道文档的相对次序,那么最终就能恢复出整个排列。比如对于文档(a,b,c),如果知道a和b、b和c、a和c之间的相对次序,那么也就知道了最终的排序。 下面是PointWise和PairWise的对比: PairWise的缺陷在于,由于推导出来的是两两之间的顺序

大话算法-排序-快速排序

心已入冬 提交于 2019-12-28 04:08:28
快速排序是一种划分交换排序 基本思想是:   1.先从数列中取出一个数作为基准数,一般是第一个数。   2.将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。   3.再对左右区间重复第二步,直到各区间只有一个数。 若序列基本有序时,蜕变成冒泡排序,最坏情况是已经排好序 平均时间复杂度O(nlogn) 快速排序采用“分而治之、各个击破”的观念,此为原地(In-place)分割版本。 快速排序使用分治法(Divide and conquer)策略来把一个序列(list)分为两个子序列(sub-lists)。 步骤为:   1、从数列中挑出一个元素,称为“基准”(pivot),   2、重新排序数列,所有比基准值小的元素摆放在基准前面,所有比基准值大的元素摆在基准后面(相同的数可以到任何一边)。在这个分割结束之后,该基准就处于数列的中间位置。这个称为分割(partition)操作。   3、递归地(recursively)把小于基准值元素的子数列和大于基准值元素的子数列排序。   4、递归到最底部时,数列的大小是零或一,也就是已经排序好了。这个算法一定会结束,因为在每次的迭代(iteration)中,它至少会把一个元素摆到它最后的位置去。 def partaion(data, left, right): less = left - 1 #小区域是从列表初始位置前一位开始

【每日算法】交换排序算法之快速排序

℡╲_俬逩灬. 提交于 2019-12-28 04:06:59
恩,重头戏开始了,快速排序是各种笔试面试最爱考的排序算法之一,且排序思想在很多算法题里面被广泛使用。是需要重点掌握的排序算法。 1)算法简介 快速排序是由东尼·霍尔所发展的一种排序算法。其基本思想是基本思想是,通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。 2)算法描述和分析 快速排序使用分治法来把一个串(list)分为两个子串行(sub-lists)。 步骤为: 1、从数列中挑出一个元素,称为 "基准"(pivot), 2、重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作。 3、递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序。 递归的最底部情形,是数列的大小是零或一,也就是永远都已经被排序好了。虽然一直递归下去,但是这个算法总会退出,因为在每次的迭代(iteration)中,它至少会把一个元素摆到它最后的位置去。 算法伪代码描述: function quicksort(q) var list less, pivotList, greater if length(q) ≤ 1 { return q }

两数之和(two sum)问题通用解法(map法和双指针)

岁酱吖の 提交于 2019-12-27 20:33:27
文章目录 1. [LeetCode01:two sum](https://leetcode.com/problems/two-sum/) 题意 思路1:map法 代码1: 思路2:双指针解法 代码2 小结 2. [LintCode607. Two Sum III - Data structure design](https://www.lintcode.com/problem/two-sum-iii-data-structure-design/my-submissions) 题意 思路 代码 3. 167. [Two Sum II - Input array is sorted](https://leetcode.com/problems/two-sum-ii-input-array-is-sorted/) 题意 思路 代码 4. LintCode587.Two Sum - Unique pairs 题意 思路 代码 5. [LeetCode15. 3Sum](https://leetcode.com/problems/3sum/) 题意 思路 代码 6. [LintCode-382. Triangle Count](https://www.lintcode.com/problem/triangle-count/description) 题意 思路 代码 7.

Hadoop阅读笔记(三)——深入MapReduce排序和单表连接

半城伤御伤魂 提交于 2019-12-26 21:06:43
  继上篇了解了使用MapReduce计算平均数以及去重后,我们再来一探MapReduce在排序以及单表关联上的处理方法。 在MapReduce系列的第一篇就有说过,MapReduce不仅是一种分布式的计算方法,更是一种解决问题的新思维、新思路。将原先看似可以一条龙似的处理一刀切成两端,一端是Map、一端是Reduce,Map负责分,Reduce负责合。    1. MapReduce排序    问题模型:   给出多个数据文件输入如:   sortfile1.txt 11 13 15 17 19 21 23 25 27 29    sortfile2.txt 10 12 14 16 18 20 22 24 26 28 30    sortfile3.txt 1 2 3 4 5 6 7 8 9 10    最终要完成排序形成结果文件格式如下: 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 10 ……       要解决的问题有了,那么如何排序,如何实现,我们尚且存在哪些问题:    1. 我们知道MapReduce本身就有自带的排序功能,能够直接用;    2. 如果用MapReduce默认排序功能,如何使用,针对key为int类型以及String类型又有何不同;    3. 如何保证三个输入文件乃至更多个输入文件的输入