某同学写了一个多线程快排,出现了莫名其妙的问题!
今晚自己也花点时间写一个类似的多线程排序代码。对于QuickSort!一直认为,出自不同人的手,在写法上至少那么一点儿的差别。
下面是我最常用的单线程版本的写法,
int quick(int A[], int a, int b) { int l = a, r = b, m = A[(a+b)>>1]; do{ while(A[l]<m) ++l; while(A[r]>m) --r; if(l<=r) swap(A[l++], A[r--]); }while(l<r); if(a<r) quick(A, a, r); if(l<b) quick(A, l, b); }
我在Linux下使用pthread线程函数库实现多线程的排序。下面是用到的一些多线程相关的结构和函数。
继续阅读