如何对主要排序的数组进行排序

Beh*_*ooz 4 .net c# sorting algorithm

我有一个这样的数组:
1,2,3,5,6,4它是99%排序和40K元素.
我可以把它们放在一个数组,列表,链表中......
但我不知道排序它们的最快方法!

Dro*_*per 21

以下站点对常见的排序算法进行了比较 - 当集合几乎排序时,似乎插入排序获胜.


Car*_*icz 6

"当我坐在键盘上编码一个气泡......时,他们笑了起来."

但严重的是:Bubblesort很接近,但并不完全.Bubblesort反复向一个方向移动,因此如果阵列顶端附近有一个低调值,并且比较站点始终向上"冒泡",则需要对主循环进行多次迭代才能使数据项向下冒泡与当前相反.这是最糟糕的情况,对于Bubblesort来说是灾难性的.

但是BubbleSort有一个改进,有时叫做Elevator Cocktail Sort,气泡在交替的方向上移动:一次向上,一次向下,重复.这允许单个元素在单次通过中移动长距离(或实际上,2次通过),并且通过次数与需要移动的元素的数量成比例.对于少量未分类的元素,这可以提高效率.


我相信,对于一般情况,marek答案中的第二个链接会更快.Bubble/Elevator Cocktail排序的优势在于它非常简单,几乎万无一失,而且工作量很大.