读书人

快排过程中参数会是负数?解决思路

发布时间: 2012-04-05 12:42:40 作者: rapoo

快排过程中参数会是负数?

C/C++ code
void QSort(int l, int r){    int lp = l, rp = r, key = (l + r) >> 1;    while (lp < rp) {        while (a[lp] < key) lp++;        while (a[rp] > key) rp--;        if (lp <= rp)            swap(&a[lp++], &a[rp--]);    }    if (l < rp) QSort(l, rp);    if (lp < r) QSort(lp, r);}


如果把int换成unsigned,排很多数据会越界错误,而int就不会错,快排过程中参数会是负数?

[解决办法]
当程序递归到lp=0,rp=1并且a[lp]<a[rp]的时候,
C# code
while (a[lp] < key) lp++;        while (a[rp] > key) rp--; 

读书人网 >软件架构设计

热点推荐