数组逆置
数组逆置是一类非常常见的问题,我们要对一个数组的元素进行逆置,最重要的点是中心点与指针。
首先我们先初始化一个数组a[].
int a[] = { 0,1,2,3,4,5,6,7,8,9 };
通过sizeof函数我们可以算出数组长度为10。此时我们的主要任务就是寻找数组元素的中心点sz/2,并且交换a[0]与a[sz-1],sz-1的原因是数组下标是从0开始的,所以下标为0-9。
接下来我们需要写交换函数,交换是一个非常常见的引入第三变量交换代码
int reverse(int a[], int sz)
{
int i = 0;
for (i = 0; i < sz / 2; i++)
{
int tmp = a[i];
a[i] = a[sz - 1 - i];
a[sz - 1 - i] = tmp;
}
for (i = 0; i < sz; i++)
{
printf("%d ", a[i]);
}
}
在这里着重解释一下为什么交换的时侯要用到a[sz-1-i],这是因为我们交换完第一组后,就用第二个元素和倒数第二个元素来交换,而不是第二个元素和最后一个元素来交换,-i就是相当于元素向前移动一位。
最后我们使用一个for循