A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 一直很安静 中级黑马   /  2013-11-26 12:01  /  1286 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

下面代码的执行顺序是什么样的?
do{
                        while(strDate[i].compareTo(middle)<0&& i<right)//执行到此时是将符合此while的都执行完i一直加1,还是i加1之后就向下执行,在此运行do while时i再加1?
                                i++; //找出左边比中间值大的数
                        while(strDate[j].compareTo(middle)>0&& j>left)
                                j--; //找出右边比中间值小的数
                        if(i<=j){ //将左边大的数和右边小的数进行替换
                                tempDate=strDate[i];
                                strDate[i]=strDate[j];
                                strDate[j]=tempDate;
                                i++;
                                j--;
                        }
                }while(i<=j);

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 淡定

查看全部评分

3 个回复

倒序浏览
你这个代码,比较另类,学习了。
while(strDate[i].compareTo(middle)<0&& i<right)//  i 先赋值,在加 1,和下面的一样
                                i++; //左边的值大,加”1“继续
                        while(strDate[j].compareTo(middle)>0&& j>left)
                                j--; //右边的值小,减“1”,继续
当左边比中间值大的时候,i 的值加1(向右),继续比较,左邻中间值为止,j的执行思路和 i 一样。下面的代码是比较就不用说了。希望能帮到你

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 赞一个!

查看全部评分

回复 使用道具 举报
帅气的冬瓜 发表于 2013-11-26 12:22
你这个代码,比较另类,学习了。
while(strDate.compareTo(middle)left)
                                 ...

好像有点通了,是不是只要左边比中间小就+1,比中间大的时候就向下运行,下面的while循环是比中间小的就向下运行,然后将这两个数调换位置,然后再次do while循环?
回复 使用道具 举报
对  就是这个意思  
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马