Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 与被排序的数据类型相关的排序算法_.net_Algorithm_Sorting - Fatal编程技术网

.net 与被排序的数据类型相关的排序算法

.net 与被排序的数据类型相关的排序算法,.net,algorithm,sorting,.net,Algorithm,Sorting,我明天要参加一个.NET的面试,我意识到我在算法方面有点弱(否则我是一个非常优秀的程序员,也许比你更好……哈哈,笑话,谁笑了?),因为我从来没有在我的工作中编程过任何数学密集型算法 我想知道什么算法最适合/最适合对某些类型的数据进行排序?例如,您将使用什么算法按升序对两个DateTime列表进行排序?这里不允许LINQ,所以你可以最快地对它们进行排序 同样,什么算法最适合对其他类型的数据进行排序,如字符串或数字等?有不同的排序算法,但无论数据类型如何,都可以使用它们中的任何一种,您只需要一种方法

我明天要参加一个.NET的面试,我意识到我在算法方面有点弱(否则我是一个非常优秀的程序员,也许比你更好……哈哈,笑话,谁笑了?),因为我从来没有在我的工作中编程过任何数学密集型算法

我想知道什么算法最适合/最适合对某些类型的数据进行排序?例如,您将使用什么算法按升序对两个
DateTime
列表进行排序?这里不允许LINQ,所以你可以最快地对它们进行排序


同样,什么算法最适合对其他类型的数据进行排序,如字符串或数字等?

有不同的排序算法,但无论数据类型如何,都可以使用它们中的任何一种,您只需要一种方法来比较两个值,并确定它们是否相同或其中一个大于另一个

框架中有现成的排序算法,例如
List.Sort
方法。如果您正在对已受支持的简单值(如字符串、数字、日期等)列表进行排序,因为这些值有默认比较器:

myList.Sort();
如果要对自定义对象进行排序,可以为该方法提供比较器:

myList.Sort((x, y) => x.Name.CompareTo(y.Name));

如果你想自己实现一个排序算法,你可以看看不同的算法,比如插入排序、合并排序、快速排序、shell排序等等。理解和实现最简单的方法之一是。

大多数排序算法都是围绕着比较数据元素是一种原始操作这一理念设计的(也就是说,它不是算法设计的一部分)。不过也有例外(比如基数排序)

更有趣的是,什么算法最适合输入的特定假设:它是否已经基本排序;它是否都适合内存,而不会出现严重的性能问题;绑定元素是否需要保持其输入顺序;外部数据是否需要与排序关联;等等


如果我在准备面试,我会专注于后一个问题。(但我不想在前一天晚上做:)。在我看来,作为一名.NET程序员的好处之一是你不必再编写“数学密集型算法”,至少不必为简单的日常任务(如排序)编写。这里还有很多关于排序算法的问题;关于这一点,没有什么是.NET所独有的,除了可以自由地忘记每次重新实现轮子的感觉。是的,在我看来也是如此,直到两年前我再次找工作时,我使用了“List.Sort()“方法就像一个普通人会做的,但没有得到这份工作:)所以这次我想做更多的准备,以防我遇到类似的编码任务。他们是否真的告诉你,在框架中使用内置方法是你没有得到这份工作的原因?我想你躲过了一颗子弹。感谢你的幸运星,你不是为一家没有发明这里综合症的公司工作……我不知道OP需要多少细节,但当密钥是整数或小范围的浮点数时,有专门的(比O(n lg n)更快)排序算法,科迪·格雷:不,那是一家500强的雇员公司。我也这么认为,因为所有的东西最终都会转化为一个数字——它是可比的。那么,你知道有什么快速算法可以应用在罕见的情况下,当一个典型的Linq或for循环没有切断它时,你应该这样做吗?啊!泡泡排序!谢谢你的祝福,泰德!我曾经遇到过这种类型的问题,所以我认为我在这里可能还可以,但好的一点是,我现在就来看看这些。