数组逆置 reverse

一、数组的逆置

- 什么是逆置?

1.把数组中的元素 按逆序 重置
在这里插入图片描述

- reverse()逆置函数

  1. 简而言之,将首尾元素依次相交换。下面,请看代码:
#include <stdio.h>

void reverse(int arr[], int n)
{
    int p = 0;//p q 表示两个下标,p 指向头, q 指向尾
    int q = n - p - 1;// q 是怎么来的? p + q = n - 1,首元素下标 加 尾元素下标 等于元素个数 -1
    while (p < q)
    {
        int tmp = arr[p];
        arr[p++] = arr[q];//优先级不同 “[]”优先级 高于 “++”的优先级
        arr[q--] = tmp;//所以先使用arr[p] 再 p++。 q--同理
    }
}

int main()
{
    int arr[] = { 1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,10 };
    int n = sizeof(arr) / sizeof(arr[0]);//数组元素个数
    int i = 0;
    reverse(arr, n);//逆置
    //输出
    for (i = 0; i < n; i++)
    {
        printf("%d ", arr[i]);
    }

	return 0;
}

-数组逆置的图像解释

如果不理解,没有关系,下面我们来看图解:

数组逆置过程:

3.指针表述–函数代码块


void reverse(int arr[], int n)
{
    int *p = arr;//指针变量p 指向数组首元素
    int *q = p + n - 1;//指针变量q 指向数组尾元素,即 arr[n-1]
    while (p < q)
    {
        int tmp = *p;
        *p++ = *q;//*p++ 运算级先后顺序不同("*"的优先级 大于 "++" 的优先级),所以 先使用*p 再 p++
        *q-- = tmp;//同理 先*q 再 q--
    }
}

- 结尾

Ending:以上代码及解释希望能帮到你。如果还有不理解的地方,可以评论区留言,我很高兴为你解答~

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值