0

当我在 C# 中运行冒泡排序、鸡尾酒排序和快速排序时,我可以看到所有 3 个内核都在我的 AMD X3 上使用(X4 附带 1 个损坏的内核)。

为什么会这样?我的算法是顺序的,我的代码没有任何线程标签。尤其是排序算法,它是一种高度顺序的算法,不,一个事件在下一个事件完成之前不会发生。它是如何拆分算法的?

例如应要求的冒泡排序:

 public void BubbleSort()
    {
        for (int i = 1; i < amount; i++)
        {

            for (int j = 0; j < a; j++)
            {
                if (numbers[j] > numbers[j + 1])
                {
                    t = numbers[j + 1];
                    numbers[j + 1] = numbers[j];
                    numbers[j] = t;
                }
             }
          a--;
        }

    }
4

2 回答 2

3

您的代码可能会在上下文切换时交换内核。但一次只能使用一个。

于 2011-12-16T03:00:59.470 回答
1

排序算法可以并行运行并利用多个内核。您正在使用哪种排序例程?它们很可能不是顺序算法。

例如,快速排序很容易通过分而治之进行并行化

于 2011-12-16T02:53:07.287 回答