明天我接受了一次.NET面试,我意识到我的算法方面有点弱(否则我是特别优秀的程序员,可能比你好......哈哈,笑话,谁笑了?)as我从来没有在我的工作中编写任何数学上强烈的算法。
我想知道哪些算法最适合/最适合排序某些类型的数据?例如,您将使用什么算法按升序对两个DateTime
列表进行排序?这里不允许使用LINQ,以便您最快地对它们进行排序?
同样,哪些算法最适合排序其他类型的数据,如字符串或数字等?
答案 0 :(得分:1)
有不同的排序算法,但无论数据类型如何,您都可以使用它们中的任何一种,您只需要一种方法来比较两个值并确定它们是否相同,或者其中一个是否大于另一个。 / p>
框架中有现成的排序算法,例如List.Sort
方法。如果要排序已经支持的简单值列表(如字符串,数字,日期等等),因为这些值有默认的比较器:
myList.Sort();
如果要对自定义对象进行排序,可以为方法提供比较器:
myList.Sort((x, y) => x.Name.CompareTo(y.Name));
如果你想自己实现一个排序算法,你可以看看不同的,如插入排序,合并排序,快速排序,shell排序等。理解和实施的最简单的一个是bubble sort。
答案 1 :(得分:1)
大多数排序算法都是围绕这样的想法而设计的,即比较数据元素是一种基本操作(也就是说,它不是算法设计的一部分)。但也有例外(如基数排序)。
更有趣的是什么算法最适合输入的特定假设的问题:它是否已经大部分已经排序;它是否适合记忆而没有严重的性能问题;捆绑元素需要保持其输入顺序;外部数据是否需要与排序相关联;等
如果我准备接受采访,我会对后面的问题采取行动。 (但我不想在前一天晚上去做:)。祝你的面试顺利。)