相关文章推荐
大方的香烟  ·  JavaScript Array ...·  2 月前    · 
跑龙套的单杠  ·  分享6个对象数组去重的方法开发者社区·  2 月前    · 
刚失恋的黄瓜  ·  为什么C数组下标从0开始,而不是从1开始_c ...·  2 月前    · 
冷冷的草稿本  ·  txt文件转数组_python读取txt为数组·  2 月前    · 
道上混的创口贴  ·  Array.prototype.some() ...·  1 月前    · 
俊逸的土豆  ·  【冰点】:一部农民视角的编年史·  1 年前    · 
正直的芹菜  ·  【猛鬼追魂/养鬼吃人】第一人称把玩哀痛之盒( ...·  2 年前    · 
重情义的甘蔗  ·  国产电动汽车造梦之旅:“山寨特斯拉”·  2 年前    · 
俊秀的牙膏  ·  72岁落马省委原书记,手写忏悔书曝光:曾心存 ...·  2 年前    · 
粗眉毛的牛排  ·  苹果 macOS 13.5 开发者预览版 ...·  2 年前    · 
Code  ›  一个优雅的反转数组的算法开发者社区
算法 遍历 数组
https://cloud.tencent.com/developer/article/1176229
严肃的柚子
2 年前
作者头像
我是攻城师
0 篇文章

一个优雅的反转数组的算法

前往专栏
腾讯云
开发者社区
文档 意见反馈 控制台
首页
学习
活动
专区
工具
TVP
文章/答案/技术大牛
发布
首页
学习
活动
专区
工具
TVP
返回腾讯云官网
社区首页 > 专栏 > 我是攻城师 > 一个优雅的反转数组的算法

一个优雅的反转数组的算法

作者头像
我是攻城师
发布 于 2018-08-03 11:00:33
775 0
发布 于 2018-08-03 11:00:33
举报

反转数组指的是把一个倒置,如下:

原始数组:

[1,11,4,2]

` 反转后的数组:

[2,4,11,1]

` 比较简单粗暴的方法是,遍历原始数组从最后一项向前遍历,然后把输出结果保存在一个新的数组里面,这样就完成了所谓的反转。

虽然方法行的通,但性能却一般,更好的办法是通过交换实现,即第一项与最后一项交换,第二项与倒数第二项交换,依次类推,只需要遍历数组的一半的大小交换,就可以完成反转。这种思路有点类似于高斯求和的理论,只不过那里面是相加,我们这里是交换,其中:

遍历的次数=数组的长度/2

这里不分数组的长度是偶数还是奇数,如果是奇数那么中间的一位数是不需要交换的,如果是偶数则刚好对半交换,所以这里交换的次数总是等于(len/2),注意计算机算len/2都是舍一取整:

10/3=3
9/3=3

所以这里刚好就是交换的次数,利用这种方式完成交换比较简单优雅,同时不需要新生成数组空间,直接在原数组上改动即可。

Java版本代码如下:

static void reverseArray(){
        int array[]={1,2,5,4};
        System.out.println("原始数组:"+Arrays.toString(array));
        //数组的长度
        int n=array.length;
        //只需要循环长度的一半的次数即可完成反转
        for (int j = 0; j <n/2 ; j++) {
            int temp=array[j];//获取前半部分数组的每一个元素
 
推荐文章
大方的香烟  ·  JavaScript Array filter() 方法 |
2 月前
跑龙套的单杠  ·  分享6个对象数组去重的方法开发者社区
2 月前
刚失恋的黄瓜  ·  为什么C数组下标从0开始,而不是从1开始_c语言数组从0开始还是从1开始
2 月前
冷冷的草稿本  ·  txt文件转数组_python读取txt为数组
2 月前
道上混的创口贴  ·  Array.prototype.some() - JavaScript | MDN
1 月前
俊逸的土豆  ·  【冰点】:一部农民视角的编年史
1 年前
正直的芹菜  ·  【猛鬼追魂/养鬼吃人】第一人称把玩哀痛之盒(勒马尔尚迷匣)_哔哩哔哩_bilibili
2 年前
重情义的甘蔗  ·  国产电动汽车造梦之旅:“山寨特斯拉”
2 年前
俊秀的牙膏  ·  72岁落马省委原书记,手写忏悔书曝光:曾心存侥幸给中央领导写信 - 知乎
2 年前
粗眉毛的牛排  ·  苹果 macOS 13.5 开发者预览版 Beta 5 发布,修复 iPod shuffle 同步问题 - IT之家
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号