并发排序算法:快速排序与基数排序详解
在计算机科学中,排序算法是基础且重要的一部分。本文将详细介绍并发版本的快速排序(Quicksort)和基数排序(Radix Sort),包括它们的实现、效率、可移植性和可扩展性等方面。
并发快速排序
最终线程版本代码
以下是使用 Windows 线程实现的并发快速排序的代码:
unsigned __stdcall QuickSort(LPVOID pArg)
{
int p, r, q;
qSortIndex *d = NULL, *d1, *d2;
long t;
int N = *((int *) pArg);
while (1) {
WaitForSingleObject(hSem, INFINITE);
if (Done) break; //external signal to terminate threads
dequeue(Q, d);
p = d->lo;
r = d->hi;
free(d);
if (p < r)
{
q = Partition(p, r);
InterlockedIncrement(&tCount);
d1 = new qSortIndex; d1->lo = p; d1->hi = q-1;
enqueue(Q, d1);
d2 = new qSortIndex; d2->lo = q+1; d2->hi = r;
en
超级会员免费看
订阅专栏 解锁全文
868

被折叠的 条评论
为什么被折叠?



