C#中的排序

前不久去面试,其中有题是排序的,但要求时间复杂度为O(N)
比如:23,43,65,12,32,67,44.....找出其中第二大的
照我之前的想法,用个二维数组保存求出的第一大和第二大.
那么不是解决了吗?
后来面试官虽然说我题目是做对了.也满足其中要求,但扩展性不好.有可能会问第N-M大的数,那不是要开辟N-M维数组.

(当然有人知道怎么做了.)
面试官告诉我其实可以第一次把最大的往后排,最后一个是最大的,去掉.
再从第一个开始排最大的.那这个就是第二大的.实际只要一个for循环.
如果要找第N-M大的,那就在一个for循环中排N-M次了.

实现方法让大家自己做吧,后面跟上C#中的相关排序方法:

冒泡排序

 

选择排序

 

插入排序

 

希尔排序
posted @ 2007-05-23 01:08  大力哥的技术  阅读(219)  评论(0)    收藏  举报
版权
作者:Bober Song

出处:http://bober.cnblogs.com

Care健康:http://www.aicareyou.com

推荐空间:华夏名网

本文首发博客园,版权归作者跟博客园共有。

转载必须保留本段声明,并在页面显著位置给出本文链接,否则保留追究法律责任的权利。