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