一个数组,有n个元素,我们定义两个数组下标,left=0,right=n-1,交换a[left]和a[right]即可实现数组逆序输出
void reverse(int arr[], int left, int right)
{
int length = left + right;
while (left + right == length)
{
int temp;
temp = arr[left];
arr[left] = arr[right];
arr[right] = temp;
left++;
right--;
if ((left == right)||(left>right))
{
break;
}
}
}
//第二种方式也可以写while(left<right),就不要if了,其实if和这里的判断条件是等价的
//但是如果用if(left==right),while (left + right == length),如果数组元素是偶数,判断条件仍写为left + right == length,会导致数组元素交换失败,程序无法实现数组的翻转。因为当left + right == length时,实际上left和right已经相遇,这时应该跳出循环。但是由于判断条件是等于length,所以会导致循环继续执行,从而导致数组元素交换失败
仅个人看法,希望对你们有帮助!