波斯码BOSSMA Information Technology

C#排序算法之基数排序

发布时间:2010年9月14日 / 分类:DOTNET / 评论

基数排序属于“分配式排序”,基数排序法又称“桶子法”,顾名思义,它是透过键值的部份信息,将要排序的元素分配至某些“桶”中,藉以达到排序的作用,基数排序法是属于稳定性的排序。基数排序的方式可以采用LSD(Least significant digital)或MSD(Most significant digital),LSD的排序方式由键值的最右边开始,而MSD则相反,由键值的最左边开始。

c#排序算法之归并排序

发布时间:2010年9月14日 / 分类:DOTNET / 评论

归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。

c#排序算法之堆排序

发布时间:2010年9月14日 / 分类:DOTNET / 评论

堆排序(HeapSort)是一树形选择排序。堆排序的特点是:在排序过程中,将R[l..n]看成是一棵完全二叉树的顺序存储结构,利用完全二叉树中双亲结点和孩子结点之间的内在关系,在当前无序区中选择关键字最大(或最小)的记录。堆排序的时间,主要由建立初始]堆和反复重建堆这两部分的时间开销构成。

C#排序算法之快速排序

发布时间:2010年9月13日 / 分类:DOTNET / 评论

前边几篇文章介绍了几种排序的算法,并且针对某些算法做了优化。这篇文章介绍一种比较快速的排序算法:快速排序,可以说是冒泡排序的改进。原理是就是找出一个基准数,然后将小于该数的数字放到左边,大于该数的数字放到右边,这样就完成一轮快速排序,然后左边部分和右边部分分别再进行快速排序,如此递归执行,只有一个数字时就排序完毕了。

C#多线程的同步与通信

发布时间:2010年9月13日 / 分类:DOTNET / 评论

C#中使用lock和Monitor控制多线程对资源的使用,最常见的生产者和消费者问题就是多线程同步和通信的经典例子。这篇文章通过例子来了解C#多线程的同步与通信。

c#之多线程基础知识

发布时间:2010年9月13日 / 分类:DOTNET / 评论

多线程是指程序中包含多个执行流,即在一个程序中可以同时运行多个不同的线程来执行不同的任务,也就是说允许单个程序创建多个并行执行的线程来完成各自的任务。

C#通信之Socket通信的简单例子

发布时间:2010年9月11日 / 分类:DOTNET / 评论

socket通常也称作套接字,用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过”套接字”向网络发出请求或者应答网络请求。这里构建一个简单的例子,客户端发消息,服务端接收,然后回执一条消息。大致能够了解如何使用Socket进行通信。

C#排序算法之希尔排序(shellsort)

发布时间:2010年9月10日 / 分类:DOTNET / 评论

希尔排序(shellsort)又叫增量递减(diminishing increment)排序,是对直接插入排序的优化,由D.L. Shell发明,这个算法是通过一个逐渐减小的增量使一个数组逐渐趋近于有序从而达到排序的目的。希尔排序对数据进行分组,每个分组进行直接插入排序。

多线程面试问题:顺序输出多个ABC序列

发布时间:2010年9月10日 / 分类:DOTNET / 评论

多线程面试问题:顺序输出多个ABC序列,不使用Sleep。本来多线程是用来更高效的利用CPU的时间,所以执行的顺序是不太好控制的。这里不对这个问题的意义进行评述,说一下解决方案。参考了java的解决方案,主要方法就是指定下一个输出的字符,然后再输出的方法里边判断是不是当前字符就可以了。

C#排序算法之鸡尾酒排序

发布时间:2010年9月9日 / 分类:DOTNET / 评论

鸡尾酒排序,也就是定向冒泡排序, 鸡尾酒搅拌排序, 搅拌排序 (也可以视作选择排序的一种变形), 涟漪排序, 来回排序 或者 快乐小时排序, 是冒泡排序的一种变形。此演算法与冒泡排序的不同处在于排序时是以双向在序列中进行排序。参照百度百科,整了一个C#版本的。