首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

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

2012-04-05 
快排过程中参数会是负数?C/C++ codevoid QSort(int l, int r){int lp l, rp r, key (l + r) 1wh

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

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--; 

热点排行