while(条件) 语句;语句 容易理解错的一点

今天写代码犯了一个很简单的错误,但是刚开始困惑了好一会儿,还是基础不扎实的原因。

问题:

代码:

int partition(int a[], int low, int high)
{
	int privotKey = a[low];                             //基准元素  
	while (low < high) {                                   //从表的两端交替地向中间扫描  
		while (low < high  && a[high] >= privotKey) --high;  //从high 所指位置向前搜索,至多到low+1 位置。将比基准元素小的交换到低端  
		swap(&a[low], &a[high]);
		while (low < high  && a[low] <= privotKey) ++low;
		swap(&a[low], &a[high]);
	}
	print(a, 5);
	return low;
}

这是几个while循环,上面的这种写法让人很容易想错(我自己容易想错)

在记忆中 while循环一般是这样用的

while(条件)

{

语句

}

也就是条件是用"()"小括号括起来的,循环执行的语句是用"{}"大括号括起来的,这是记忆中的样子,思维的束缚让我不能了灵活理解下面这几句:

while (low < high  && a[high] >= privotKey) --high;  //从high 所指位置向前搜索,至多到low+1 位置。将比基准元素小的交换到低端  
swap(&a[low], &a[high]);
while (low < high  && a[low] <= privotKey) ++low;
swap(&a[low], &a[high]);
我错误的认为
swap(&a[low], &a[high]);

这句代码是第一个while循环的循环语句,后来通过代码调试,我才发现了自己的错误,这句其实跟while没什么关系,只不过是先后顺序而已,--high 这句代码才是while的循环语句,分号代表这个语句的结束。

猜你喜欢

转载自blog.csdn.net/qq_22642239/article/details/80695629
今日推荐