|
![]() | 作者: none [onizuka]
![]() |
登录 |
void Func(int A[],int n) //数组A中的n个元素全部为整数类型 { int i=0,j=n-1; while(i<j) { while(A[i]<0)i++; while(A[j]>=0)j++; if(i<j) Swap(A[i],A[j]); //将数组中A的第i个元素和第j个元素对调 else return; i++;j++; } } |
地主 发表时间: 04-08-31 08:31 |
![]() | 回复: 286 [unique] ![]() |
登录 |
while(A[j]>=0)j++; 这句将导致j访问数组越界,因此将产生无法意料的结果。 if(i<j) Swap(A[i],A[j]); //将数组中A的第i个元素和第j个元素对调 else return; 如果i<j则交换,否则退出循环,但事实上,就是没有else,也将退出循环,因此这话是多余的。 整个程序的功能好象是:把后面的负数与前面的正数进行交换。 如果改成: void Func(int A[],int n) //数组A中的n个元素全部为整数类型 { int i=0,j=n-1; while(i<j) { while(A[i]<0)i++; while(A[j]>=0)j--; if(i<j) Swap(A[i],A[j]); //将数组中A的第i个元素和第j个元素对调 i++;j--; } } 则程序变成,数组A中,把负数放前面,把正数放后面。 |
B1层 发表时间: 04-08-31 09:38 |
![]() | 回复: none [onizuka] ![]() |
登录 |
Thanks a lot |
B2层 发表时间: 04-08-31 10:45 |
|
20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon
粤ICP备05087286号