Questions tagged «sorting»

有关排序算法及其速度和复杂性的问题。


4
使用拖放UI管理列表项排序顺序的最佳方法是什么?
我有一个学生列表,应该以表格形式显示在网页上。 这些项目与SortOrder信息一起存储在DB中。 在网页上,用户可以通过将项目拖放到所需的排序顺序来重新排列列表顺序,类似于此文章。 以下是我的测试页的屏幕截图。 在上面的示例中,每行都附加了排序顺序信息。当我将John Doe(学生ID 10)放到“学生ID 1”行上方时,列表顺序现在应该是:2、10、1、8、11。 存储和更新“排序顺序”信息的乐观(较少的资源消耗)方式是什么? 我目前唯一的想法是,对于列表的排序顺序中的每个更改,每个对象的SortOrder值都应更新,我认为这非常浪费资源。 仅供参考:我的表格中最多可能有25行。
10 c#  sorting 

3
为什么将Quicksort称为“ Quicksort”?
这个问题的重点在于,与其他任何排序算法相比,它的优点不容置疑-当然还有许多其他问题。这个问题是关于名字的。为什么将Quicksort称为“ Quicksort”?当然,大多数情况下都是“快速”,但并非总是如此。简并为O(N ^ 2)的可能性是众所周知的。对Quicksort进行了各种修改以缓解此问题,但那些将最坏情况降低到保证的O(n log n)的修改通常不再称为Quicksort。(例如Introsort)。 我只是想知道为什么在所有众所周知的排序算法中,这是唯一应得的“快速”名称,它不描述算法的工作原理,而是描述算法的速度(通常)。之所以称为Mergesort,是因为它合并了数据。之所以称为Heapsort,是因为它使用堆。Introsort的名称来自“ Introspective”,因为它会监视自己的性能来决定何时从Quicksort切换到Heapsort。同样,对于所有较慢的变量-Bubblesort,Insertion排序,Selection排序等,它们均以其工作方式命名。我能想到的唯一一个例外是“ Bogosort”,它实际上只是一个笑话,没人在实践中实际使用过。为什么Quicksort不能称为更具描述性的名称,例如“分区排序”或“数据透视排序”,哪个描述了它的实际作用?甚至都不是“先到这里”的情况。Mergesort的开发比Quicksort早了15年。(根据维基百科分别为1945年和1960年) 我想这确实是一个历史问题,而不是编程问题。我很好奇它的名字-只是好的营销?

6
快速排序,不要打扰?
尤其是在编写“标准”(非HPC)应用程序时,您会考虑选择哪种排序算法,还是仅仅考虑使用快速排序(大多数库都将其称为排序)?在特定情况下,在某种程度上可能是有利可图的,但另一方面,适当的优化需要一些时间来分析问题并制定基准。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.