我是否正确实现了此插入排序?

时间:2013-01-16 19:56:32

标签: vb.net insertion-sort

我有几个Threads包含他们正在处理的对象队列,而另一个线程从各种输入读取并创建这些对象。某些对象必须由特定线程处理,而其他对象可以由任何自由线程处理(因此不为所有这些线程使用一个队列的原因),但我仍然希望保持负载合理平衡。我有一个数组,其中包含每个线程使用的所有ConcurrentQueues,我想根据它们的计数对它们进行排序。由于大多数时候队列几乎都会排序,所以Insertion Sort在这里表现良好。

(编辑:对于那些提问,我正在编写自己的,因为根据http://msdn.microsoft.com/en-us/library/6tf1f0bc(v=vs.100).aspx“此方法使用QuickSort算法,”我想要插入排序)

我用http://en.literateprograms.org/Insertion_sort_(Visual_Basic_.NET)给了我一个手,但我真的不相信自己。这看起来是否正确?

        Dim i As Integer = 0

        While (i < MaxThreads)

            Dim j As Integer = i - 1
            Dim v As Concurrent.BlockingCollection(Of BufferEntry) = ThreadQueues(i)

            While (j > -1)
                If (ThreadQueues(j).Count <= v.Count) Then Exit While
                ThreadQueues(j + i) = ThreadQueues(j)

                j -= 1
            End While

            ThreadQueues(j + 1) = v

            i += 1
        End While

1 个答案:

答案 0 :(得分:2)

总的来说它看起来还不错,但我认为这一行

ThreadQueues(j + i) = ThreadQueues(j)

应该是

ThreadQueues(j + 1) = ThreadQueues(j)