2011-12-16 60 views
0

當我在C#中運行bubblesorts,cocktailsorts和快速排序,我可以看到,所有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--; 
     } 

    } 

回答

3

您的代碼可以潛在地交換上下文切換上芯。但一次只能使用一個。

1

排序算法以並行方式運行,並利用多個核:

上請求的冒泡例如。你正在使用哪種排序例程?它們很可能不是順序算法。

作爲示例,快速排序是很容易parallelize via divide and conquer

+0

這是我的冒泡,比較遺憾的是可怕的格式化,我將它添加到我的主要職務 – 2011-12-16 02:55:23

+0

@aurelietass這將只使用一個核心。您確定*您的程序*正在使用3核,而不是您的系統上運行的其他軟件? – 2011-12-16 02:56:48