美文网首页我爱编程
2018-03-13 C# Queue、二分查找算法、Boo

2018-03-13 C# Queue、二分查找算法、Boo

作者: 胡諾 | 来源:发表于2018-03-15 16:27 被阅读0次

第一组:刘聪 C# Queue

1、Queue定义

队列(Queue)代表了一个先进先出的对象集合。当您需要对各项进行先进先出的访问时,则使用队列。当您在列表中添加一项,称为入队,当您从列表中移除一项时,称为出队。

2、优点

a、能对集合进行顺序处理(先进先出)。
b、能接受null值,并且允许重复的元素。

3、 Queue的构造器
  • Queue ()
    初始化 Queue 类的新实例,该实例为空,具有默认初始容量(32)并使用默认增长因子(2.0)。
  • Queue (ICollection)
    初始化 Queue 类的新实例,该实例包含从指定集合复制的元素,具有与所复制的元素数相同的初始容量并使用默认增长因子。
  • Queue (Int32)
    初始化 Queue 类的新实例,该实例为空,具有指定的初始容量并使用默认增长因子。
  • Queue (Int32, Single)
    初始化 Queue 类的新实例,该实例为空,具有指定的初始容量并使用指定的增长因子。
4. Queue的方法

Void Clear():从 Queue 中移除所有对象。

Bool Contains(object obj):确定某元素是否在 Queue 中。
Object Clone():创建 Queue 的浅表副本。
Void CopyTo(Array array,int index):从指定数组索引开始将 Queue 元素复制到现有一维 Array 中。
Object Dequeue():移除并返回位于 Queue 开始处的对象。
Void Enqueue(object obj) :将对象添加到 Queue 的结尾处。
Object Peek() :返回位于 Queue 开始处的对象但不将其移除。
Object[]ToArray():将 Queue 元素复制到新数组。
Void TrimToSize():将容量设置为 Queue 中元素的实际数目。


第二组:徐晋 十大编程算法之四:二分查找算法

二分查找算法是一种在有序数组中查找某一特定元素的搜索算法。搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束; 如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。折半搜索每次把搜索区域减少一半,时间复杂度为Ο(logn) 。


第三组:吴景霞 Bootstrap3 datetimepicker控件的使用

Bootstrap3 日期+时间选择控件
1.支持日期选择,格式设定
2.支持时间选择
3.支持时间段选择控制
4.支持中文
官网地址:http://eonasdan.github.io/bootstrap-datetimepicker/
git地址:https://github.com/Eonasdan/bootstrap-datetimepicker
moment语言包:https://github.com/moment/moment
datetimepicker使用配置说明:http://eonasdan.github.io/bootstrap-datetimepicker/Options/
moment时间格式化使用说明:http://momentjs.com/docs/
使用方法,引用的文件:

1.  <script src="../Js/jquery-1.11.3.min.js"></script>  
2.  <link href="../Js/bootstrap-3.3.5-dist/css/bootstrap.css" rel="stylesheet" />  
3.  <script src="../Js/bootstrap-3.3.5-dist/js/bootstrap.min.js"></script>  
4.    
5.  <link href="../Js/bootstrap-datetimepicker/css/bootstrap-datetimepicker.min.css" rel="stylesheet" />  
6.  <script src="../Js/bootstrap-datetimepicker/js/moment-with-locales.min.js"></script>  
7.  <script src="../Js/bootstrap-datetimepicker/js/bootstrap-datetimepicker.min.js"></script>  
8.  <div class="row">  
9.      <div class='col-sm-6'>  
10.         <div class="form-group">  
11.             <label>选择日期:</label>  
12.             <!--指定 date标记-->  
13.             <div class='input-group date' id='datetimepicker1'>  
14.                 <input type='text' class="form-control" />  
15.                 <span class="input-group-addon">  
16.                     <span class="glyphicon glyphicon-calendar"></span>  
17.                 </span>  
18.             </div>  
19.         </div>  
20.     </div>  
21.     <div class='col-sm-6'>  
22.         <div class="form-group">  
23.             <label>选择日期+时间:</label>  
24.             <!--指定 date标记-->  
25.             <div class='input-group date' id='datetimepicker2'>  
26.                 <input type='text' class="form-control" />  
27.                 <span class="input-group-addon">  
28.                     <span class="glyphicon glyphicon-calendar"></span>  
29.                 </span>  
30.             </div>  
31.         </div>  
32.     </div>  
33. </div>  
34. [javascript]
35. $(function () {  
36.     $('#datetimepicker1').datetimepicker({  
37.         format: 'YYYY-MM-DD',  
38.         locale: moment.locale('zh-cn')  
39.     });  
40.     $('#datetimepicker2').datetimepicker({  
41.         format: 'YYYY-MM-DD hh:mm',  
42.         locale: moment.locale('zh-cn')  
43.     });  
44. }); 

第四组:傅云 求两个数组之间是否修改、删除、更新

Array holdcardcontrol = (oldversion.ToArray()).Intersect(newversion.ToArray()).ToArray();//交集--update
Array delcardcontrol = (oldtids.ToArray().Except(newtids.ToArray())).ToArray();//待删除
Array addcardcontrol = (newtids.ToArray().Except(oldtids.ToArray())).ToArray();//待添加


第五组:王炳钧 【C#】List<T>对象的深复制

参考网址: http://blog.csdn.net/qq_18995513/article/details/53957048

一、List对象中的T是值类型的情况(int 类型等)
对于值类型的List直接用以下方法就可以复制:

List<T> oldList = new List<T>();
oldList.Add(..);
List<T> newList = new List<T>(oldList);

二、List对象中的T是引用类型的情况(例如自定义的实体类)
1、对于引用类型的List无法用以上方法进行复制,只会复制List中对象的引用,可以用以下扩展方法复制:

static class Extensions   
{   
    public static IList<T> Clone<T>(this IList<T> listToClone) where T: ICloneable   
    {   
        return listToClone.Select(item => (T)item.Clone()).ToList();   
    }   
//<span style="color:#000000;">当然前题是List中的对象要实现ICloneable接口</span>  
}  

2、另一种用序列化的方式对引用对象完成深拷贝,此种方法最可靠

public static T Clone<T>(T RealObject)   
{   
    using (Stream objectStream = new MemoryStream())   
    {   
       //利用 System.Runtime.Serialization序列化与反序列化完成引用对象的复制  
        IFormatter formatter = new BinaryFormatter();   
        formatter.Serialize(objectStream, RealObject);   
        objectStream.Seek(0, SeekOrigin.Begin);   
        return (T)formatter.Deserialize(objectStream);   
    }   
}

相关文章

网友评论

    本文标题:2018-03-13 C# Queue、二分查找算法、Boo

    本文链接:https://www.haomeiwen.com/subject/eomhqftx.html