前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >案例:数组的逆序

案例:数组的逆序

作者头像
一缕82年的清风
发布2022-01-10 10:30:02
3160
发布2022-01-10 10:30:02
举报
文章被收录于专栏:lsqingfeng

在讲解数组的逆序之前,我们需要了解这么一个需求,就是如何完成数组元素的交换。

假设我们现在有一个数组:

代码语言:javascript
复制
                int[] arr = {0,1};

如果我现在打印arr[0] 得到的结果肯定是0,打印arr[1] 得到的元素肯定是1, 那么我们现在的需求是将数组中的两个元素做一下交换,也就是我希望打印arr[0] 得到的是1,打印arr[1] 得到的是0.

那么这个需求我们应该如何实现呢,这就好像我们要把一杯可乐和一杯雪碧做一个交换,我们需要借助一个空杯子。我们我们定义一个临时的变量temp来充当这个空杯子,然后把可乐倒进空杯子,把雪碧倒进可乐的杯子,再把原来空杯子中的可乐到回到雪碧的杯子中。我们现在是要将arr[0] 和arr[1] 做一个交换, 这就好像是我们前面说的可乐和雪碧,代码如下:

代码语言:javascript
复制
        int temp = arr[0];  //将可乐倒入空杯子
        arr[0] = arr[1]; //将雪碧倒入已经空了的可乐杯子
        arr[1] = temp;//在将原来空杯子中的可乐导入到已经空了的雪碧杯子

好了,就这样简单的三部,我们就已经完成了上面的需求。好了那么现在我们要做的是这么一件事,将一个数组中的所有元素完成逆序,注意并不是逆序打印,而是真正做到将数组中的所有元素翻转一下。那么应该怎么做

假设我们现在有一个数组 ,里面有5个元素{1,2,3,4,5},我们要做一个逆序,其实就是得到一个新的数组{5,4,3,2,1};通过对比可以发现,我们只需要将第一个元素1和最后一个元素5, 第二个元素2和倒数第二个元素4做一下交换就可以完成这个需求。

那么5个元素的数组。我们总共需要交换2次,中间的元素3是不需要动的。而对于如果是6个元素的数组呢,总共需要交换3次。所以我们其实可以找到一个规律,就是任意一个元素要想实现逆序,需要交换的次数是 arr.length/2 次。这其实也是我们写的循环语句需要执行的次数。好,那么接下来我们只需要找到是哪两个元素交换就可以了。假设我们设置一个for循环

代码语言:javascript
复制
        for(int i=0;i<arr.length/2;i++){}

这正是数组要交换的次数,当i=0的时候,是第一个元素arr[0] 和最后一个元素 arr[arr.length-] 做交换。 arr[arr.length-1]这个元素大家应该可以看懂吧,数组的索引是从0开始的,所以数组中的最后一个元素的索引是arr.length-1;当i=1的时候,是arr[1] 和arr[arr.length-1-1];做交换。当i=2是,是arr[2] 和arr[arr.length-1-2]做交换 。索引我们可以找到规律,其实就是arr[i] 和arr[arr.length-1-i]做交换。这时候代码就比较好写了。

代码语言:javascript
复制

        for(int i=0;i<arr.length/2;i++){
                    int temp = arr[i];
                    arr[i] = arr[arr.length-1-i];

                    arr[arr.lentgh-1-i] = temp;

        }

对于数组的逆序,其实还有另一种写法,大家可以研究研究,如果有看不懂的,可以在文章下留言。

代码语言:javascript
复制
            for(int start=0,end = arr.length-1;start<end;start++,end--){

                        int temp = arr[start];

                        arr[start] = arr[end];
                        arr[end] = temp;
            }
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018/06/06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档