在用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