.net18

数组sort排序

sort比较次数,sort用法,sort常用

描述

方法sort()将在原数组上对数组元素进行排序,即排序时不创建新的数组副本。如果调用方法sort()时没有使用参数,将按字母顺序(更为精确地说,是按照字符编码的顺序)对数组中的元素进行排序。

原理:

为什么sort()都可以排序呢?而且时间和空间复杂度都还比较优良,有没有人想过sort()里面是怎么实现的呢?

其实sort()是根据需要排序的数组的长度进行区分的:

当你的数组长度是小于60的,它会直接进行一个插入排序;

当长度大于60时,有可能会merge排序或者是quick排序,merge和quick会将整个数组进行划分,进行递归,一旦划分的子数组长度小于60时,将不再递归划分,直接进行插入排序.为什么会这么排序呢?

原因是,在数据量小的时候.插入排序的常数代价非常低,虽然时间复杂度是O(n平方),但是常数项比较低.此时此刻,在数据量比较小的时候,优势就展现出来了.

那么问题又来而来,当数据量比较大需要进行划分的时候,什么时候用merge,什么时候用quick呢?

这就要取决数组的类型了,当是基本数据类型的时候,会用quick,当是对象类型的时候会用merge.

因为当是基本数据类型的时候不需要考虑稳定性的因素,但是对象类型就要考虑了,因为对象不止用来排序的这一个属性,可能已经在其他属性已经排好序了,在此番排序之后还需要保证数组的稳定性.\
 

面向对象:抽象出所有参与者的共性,屏蔽差异化。

一切皆对象。

C#的五种访问修饰符

所有类型和类型成员都具有可访问性级别,用来控制是否可以在您程序集的其他代码中或其他程序集中使用它们。 可使用访问修饰符指定声明类型或成员的可访问性。
在C#语言中,共有五种访问修饰符:public、private、protected、internal、protected internal

作用范围如下表:

 

 

 

 

 

 

1.里氏转换
1)子类可以赋值个父类。在需要父类参数的时候,子类转换成父类。
2)如果父类中装的是子类对象,那么可以将这个父类强制转换为子类对象。

3)子类对象可以调用父类的成员,但父类的对象不能调用子类的成员。


//子类对象可以赋给父类
            person p = new student();
          //父类中包含子类成员,可以将父类强制转换成子类。
            student ss = (student)p;
2.强制类型转换判断
is:表示A类型是否能强制转换成B,如果能够转换成功,则返回一个true,否则返回一个false。
as:表示类型转换。如果能够转换则返回对应的对象,否则返回一个null。

 

 

 

 

快捷键F12可快速跳转到定义,Ctrl 加 - (减号)可跳转回原来的位置。

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值