三九宝宝网宝宝百科宝宝知识

icomparer怎么让他正排序逆排序 C

12月21日 编辑 39baobao.com

[理论学习——物体排序的教学]一、排序的意义排序是将两个以上物体根据某种特征上的差异,按有一定的规则排列程序。排序是建立在对事物比较的基础上,它需要有一定的判断推理能力。然而排序对幼儿学习数学知...+阅读

1、List.Sort(),只能在集合元素实现了IComparable泛型接口时使用 2、List.Sort(Comparison),Comparison是一个方法委托,它带有2个参数T,返回int类型,可以灵活指定如何排序,但是需要编码时手动指定如何排序; 3、List.Sort(IComparer),使用实现了IComparer接口的类给集合排序,可以灵活指定如何排序,但是需预先定义好类的排序方法 这里介绍第三种方法: 首先定义一个类,用作集合的元素: using System; using System.Collections.Generic; ////// 学生类 ///public class Student { private string name; // 姓名 public string Name { get { return name; } set { name = value; } } private int age; // 年龄 public int Age { get { return age; } set { age = value; } } private string grade; // 年级 public string Grade { get { return grade; } set { grade = value; } } //构造函数 public Student(string name, int age, string grade) { this.name = name; this.age = age; this.grade = grade; } public override string ToString() { return this.name + "," + this.age.ToString() + "," + this.grade; } } 接着定义一个用于比较的类,实现IComparer泛型接口: public class StudentComparer : IComparer{ public enum CompareType { Name, Age, Grade } private CompareType type; // 构造函数,根据type的值,判断按哪个字段排序 public StudentComparer(CompareType type) { this.type = type; } #region IComparer成员 public int Compare(Student x, Student y) { switch(this.type) { case CompareType.Name: return x.Name.CompareTo(y.Name); case CompareType.Age: return x.Age.CompareTo(y.Age); default://case CompareType.Grade: return x.Grade.CompareTo(y.Grade); } } #endregion } 下面就开始排序了: using System; using System.Collections.Generic; public class test { public static void Main() { Listarr = new List(); arr.Add(new Student("张三", 7, "一年级")); arr.Add(new Student("李四", 11, "二年级")); arr.Add(new Student("王五", 21, "一年级")); arr.Add(new Student("陈六", 8, "三年级")); arr.Add(new Student("刘七", 15, "二年级")); // 调用Sort方法,实现按年级排序 arr.Sort(new StudentComparer(StudentComparer.CompareType.Grade)); // 循环显示集合里的元素 foreach( Student item in arr) Console.WriteLine(item.ToString()); // 调用Sort方法,实现按姓名排序 arr.Sort(new StudentComparer(StudentComparer.CompareType.Name)); // 循环显示集合里的元素 foreach( Student item in arr) Console.WriteLine(item.ToString()); } }

以下为关联文档:

数据结构教程第三十四课插入排序,快速排序教学目的: 掌握排序的基本概念,插入排序、快速排序的算法教学重点: 插入排序、快速排序的算法教学难点: 快速排序算法授课内容:一、排序概述排序:将一个数据元素的无序序列重...

数据结构教程第三十六课选择排序,归并排序教学目的: 掌握选择排序,归并排序算法教学重点: 选择排序之堆排序,归并排序算法教学难点: 堆排序算法授课内容:一、选择排序每一趟在n-i+1(i=1,2,...n-1)个记录中选取关键字...

WPS表格2005排序功能全接触我们在用WPS表格2005来处理相关的数据表时,常常要对表格中的数据进行排序操作。下面,我们以图1所示的“员工 基本情况登记表”为例,全方位体验一下WPS表格2005的排序功能。1、...

汉诺塔的C语言实现以及冒泡排序汉诺塔绝对是一个经典的算法题目,虽然当年也讲过,程序也不长,但是一直以来总觉得理解的不清楚,看程序也能明白什么意思,过一段时间程序忘了,想不起来的时候,就怎么都想不明白了,虽然...

巧为表格标题排序我们知道,在WPS文字中,一些需要跨页的表格可以用“标题行重复”功能使首行(即“表头”)出现在每一页表格的第一行。但是,如果使表题也出现在每一页,并且每一页的表题中都要有“表...

算法回顾之插入排序使用范围:小规模数据的排序的方案,而且是一种稳定的排序。 算法复杂度:O(n2) 思想: 首先我们来想一个问题,我们是否能找到一种方法,使一个数插入到一个有序的数组当中,并保证它依然有...

按规律排序活动目标: 1、体验物体排列的规律,愿意用语言表述排列的规律,并学习根据规律进行补排。 2、在游戏中引导幼儿进行补排练习,在玩中学,体验数学活动的乐趣。活动准备: 1、有规律排序...

幼儿园数学活动 10以内各体物正逆排序课后反思一、设计思路: 5以内物体按数量进行正逆排序是中班上学期数学教学内容,也是在幼儿已经掌握了5以内数的形成的基础上进行的,此类活动有利于发展幼儿的思维能力,对中班幼儿接下来...

大班对10个宽窄不同的物体进行排序反思大班幼儿对于大小、长短、粗细、高矮等的量的比较的精确性有了很大的提高,但对于厚薄、宽窄,幼儿虽然积累了很多的生活经验,但不太会用精确的语言来准确表达。同时,在感知、区分...

推荐阅读
图文推荐