C#学习笔记(27)——委托排序(1)
说明(2017-11-20 17:21:35):
1. 感觉难点都在冒泡排序上。。貌似之前跳过去了没学啊!冒泡排序的精髓就在于,两两比较,最大的排到最后一位,再把前面的重新两两比较,把最大的排到倒数第二位,一直排完,最小的就在第一位了。
2. 两个排序方法,自己写的numCompare按数字大小排序,和系统自带的string.Compare按字符大小排序,分别授权给委托,哪个授权执行哪个方法。
3. 后面说要搞得再复杂一点,所以待续。。To be continued。。
4. 忘了写,效果要在Console.ReadKey()那一行加断点,观察nums的值得排序。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace _04_委托排序
{
class Program
{
public delegate int MyDel(string s1, string s2);
static void Main(string[] args)
{
string[] nums = "600,1,10,100,22,200,3,130,8".Split(',');
//定义委托变量
MyDel myDel;
//选择一个方法授权,字符串排序,或者数字排序
//string.Compare()字符串排序,应该是按照ASCII码排序。
myDel = string.Compare;
//myDel = numCompare;
for (int i = ; i < nums.Length; i++)
{
for (int j = ; j < nums.Length - i - ; j++)
{
if (myDel(nums[j], nums[j + ]) > )
{
string a = nums[j];
nums[j] = nums[j + ];
nums[j + ] = a;
}
}
}
Console.ReadKey();
}
//按照数字大小排序
public static int numCompare(string n1, string n2)
{
int num1 = Convert.ToInt32(n1);
int num2 = Convert.ToInt32(n2);
if (num1 < num2)
{
return -;
}
else if (num1 > num2)
{
return ;
}
else
{
return ;
}
}
}
}
另外,numCompare方法可以简写,后来回看视频才发现的:
public static int numCompare(string n1, string n2)
{
return Convert.ToInt32(n1) - Convert.ToInt32(n2);
}
C#学习笔记(27)——委托排序(1)的更多相关文章
- Effective STL 学习笔记 31:排序算法
Effective STL 学习笔记 31:排序算法 */--> div.org-src-container { font-size: 85%; font-family: monospace; ...
- [原创]java WEB学习笔记27:深入理解面向接口编程
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- 《C# 语言学习笔记》——委托
委托是一种可以把引用存储为函数的类型. 委托的声明非常类似于函数,但不带函数体,且要使用delegate关键字.委托的声明制定了一个返回类型和一个参数列表. 在定义了委托后,就可以声明该委托类型的变量 ...
- [读书笔记]C#学习笔记二: 委托和事件的用法及不同.
前言: C#委托是什么 c#中的委托可以理解为函数的一个包装, 它使得C#中的函数可以作为参数来被传递, 这在作用上相当于C++中的函数指针. C++用函数指针获取函数的入口地址, 然后通过这个指针 ...
- [C#学习笔记]Func委托与Action委托
学习一项新知识的时候,最好的方法就是去实践它. 前言 <CLR via C#>这本神书真的是太有意思了!好的我的前言就是这个. Fun 如果要用有输入参数,有返回值的委托,那么Func委托 ...
- js学习笔记-事件委托
通过事件委托,你可以把事件处理器绑定到父元素上,避免了把事件处理器添加到多个子级元素上.从而优化性能. 事件代理用到了事件冒泡和目标元素.而任何一个元素的目标元素都是一开始的那个元素. 这里首先要注意 ...
- Linux下汇编语言学习笔记27 ---
这是17年暑假学习Linux汇编语言的笔记记录,参考书目为清华大学出版社 Jeff Duntemann著 梁晓辉译<汇编语言基于Linux环境>的书,喜欢看原版书的同学可以看<Ass ...
- PHP全栈学习笔记27
数组概述,类型,声明,遍历,输出,获取数组中最后一个元素,删除重复数组,获取数组中指定元素的键值,排序,将数组中的元素合成字符串. 数组概述,数组是存储,管理和操作一组变量. 数组类型为一维数组,二维 ...
- 吴裕雄--天生自然Numpy库学习笔记:NumPy 排序、条件刷选函数
numpy.sort() 函数返回输入数组的排序副本.函数格式如下: numpy.sort(a, axis, kind, order) 参数说明: a: 要排序的数组 axis: 沿着它排序数组的轴, ...
- Hadoop学习笔记: 全排序
在Hadoop中实现全排序有如下三种方法: 1. 只使用一个reducer 2. 自定义partitioner 3. 使用TotalOrderPartitioner 其中第一种方法显然违背了mapre ...
随机推荐
- 对于“Newtonsoft.Json”已拥有为“NETStander.Library”定义的依赖项,解决办法
问题描述: 在使用visual studio中的NuGet包管理下载程序时,有时会出现-对于“Newtonsoft.Json”已拥有为“NETStander.Library”定义的依赖项,这样的错误. ...
- 微信公众平台HTTPS方式调用配置免费https服务器
微信公众平台数据传输安全,提高业务安全性,公众平台将不再支持HTTP方式调用.避免影响正常使用中含有HTTP方式调用的服务,请开发者尽快调整,将现有通过HTTP方式调用的切换成HTTPS调用,平台将于 ...
- Java 内存模型及GC原理 (转载)
一个优秀Java程序员,必须了解Java内存模型.GC工作原理,以及如何优化GC的性能.与GC进行有限的交互,有一些应用程序对性能要求较高,例如嵌入式系统.实时系统等,只有全面提升内存的管理效率,才能 ...
- [Warning] TIMESTAMP with implicit DEFAULT value is deprecated
启动mysql时,报如下警告信息: [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explic ...
- Selenium2自动化测试实战序言
记得很久之前接触自动化的时候看了一本关于某早期自动化测试工具的书,书名已经记不得了,内容却一直印象深刻.因为那本书根本就是把官方文档有选择性的翻译一遍,对于实际应用来说其作用几乎是零.因此从那时候起我 ...
- nodejs的Express框架源码分析、工作流程分析
nodejs的Express框架源码分析.工作流程分析 1.Express的编写流程 2.Express关键api的使用及其作用分析 app.use(middleware); connect pack ...
- MySQL表名不区分大小写的设置方法
原来Linux下的MySQL默认是区分表名大小写的,通过如下设置,可以让MySQL不区分表名大小写:1.用root登录,修改 /etc/my.cnf:2.在[mysqld]节点下,加入一行: lowe ...
- 第1章 Python基础-Python介绍&循环语句 练习题&作业
1.简述编译型与解释型语言的区别,且分别列出你知道的哪些语言属于编译型,哪些属于解释型? 高级语言分为编译型与解释型两种,分别从执行速度.开发效率.跨平台性三个方面说它们的区别. 编译型语言因为执行的 ...
- 关于try catch
说明try块中有return语句时,仍然会首先执行finally块中的语句,然后方法再返回. 如果try块中存在System.exit(0);语句,那么就不会执行finally块中的代码,因为Syst ...
- How to compare dates in Java
How to compare dates in JavaBy mkyong | January 18, 2010 | Updated : November 15, 2016 | Viewed : 93 ...