CUDA學習-cdp快排實現(預備知識)

在用gpu實現快排之前,先回顧一下在用cpu進行快速排序的方法:

void QuickSort(int array[], int start, int last)
{
    int i = start;
    int j = last;
    int temp = array[i];
    if (i < j)
    {
        while (i < j)
        {
            while (i < j &&  array[j]>=temp )
                j--;
            if (i < j)
            {
                array[i] = array[j];
                i++;
            }
            while (i < j && temp > array[i])
                i++;
            if (i < j)
            {
                array[j] = array[i];
                j--;
            }            
        }
        array[i] = temp;
        QuickSort(array, start, i - 1);
        QuickSort(array, i + 1, last);
    }
}

一看到C++的快排代碼就會覺得很熟悉,快排的主要思想:主要就是拿一個數作爲基準,經過變換將比基準大的數都移到基準之後,把所有比基準要小的數全部移到基準之前——這稱爲一次快速排序;將左、右子序列繼續進行快排操作,如此遞歸下去不停的進行快速排序,最後會得到一個有序的序列。

如圖:黑色爲基準,藍色爲比基準要小的序列,紅色爲比基準要大的序列,分割後繼續遞歸選擇基準值繼續排序。


cdp快排實現(一次快排)https://blog.csdn.net/shungry/article/details/90521131

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章