社区
数据结构与算法
帖子详情
请教:不使用第三个变量交换两个数组的值
Kandada1985
2009-01-18 06:06:43
好像见过这么一道面试题,现在忘记咋做了,希望各位大侠帮忙?
我现在想问的是有2个情况:
1)如果两个数组的大小一样怎么交换?
2)如果两个数组的大小不一样呢?
...全文
198
10
打赏
收藏
请教:不使用第三个变量交换两个数组的值
好像见过这么一道面试题,现在忘记咋做了,希望各位大侠帮忙? 我现在想问的是有2个情况: 1)如果两个数组的大小一样怎么交换? 2)如果两个数组的大小不一样呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
idealguy
2009-01-19
打赏
举报
回复
例如: A=5, B=7
A = A + B //A=5+7=12
B = A - B //B=12-7=5, A=12
A = A - B //A=12-5=7, B=5, 完成交换
问题:如果A,B为Byte, A+b>255 时发生溢出
结论:
如果a,b为浮点(一般不溢出), 使用上述方法
如果a,b为整形,则采用:
A = A xor B // A=5 xor 7=2
B = A xor B // B=2 xor 7=5
A = A xor B // A=2 xor 5=7
yhec
2009-01-19
打赏
举报
回复
A = A + B
B = A - B
A = A - B
没有看明白
能否理解为
A = A + B
B = (A+B) - B
A = (A+B) - B
--------------------------
这种方法看起来符合,实际用了累加器做了中间交换单元,
shyli
2009-01-19
打赏
举报
回复
[Quote=引用 5 楼 litaoye 的回复:]
不一样大的数组怎么交换?
不知道lz的意思是不是交换两个指针的值?
[/Quote]
嗯,不懂楼主的意思。
idealguy
2009-01-19
打赏
举报
回复
但如果有溢出debug就会退出了
AlwaysSLH
2009-01-19
打赏
举报
回复
[Quote=引用 4 楼 idealguy 的回复:]
A=A+B, 溢出了咋办?
[/Quote]
溢出不是问题
引用arong1234的一句:溢出等问题不会导致算法错误,因为正运算溢出,逆运算又会溢出回来
找个例子算算就明白了
绿色夹克衫
2009-01-19
打赏
举报
回复
不一样大的数组怎么交换?
不知道lz的意思是不是交换两个指针的值?
idealguy
2009-01-19
打赏
举报
回复
A=A+B, 溢出了咋办?
AlwaysSLH
2009-01-18
打赏
举报
回复
[Quote=引用 2 楼 sincor 的回复:]
A = A + B
B = A - B
A = A - B
没有看明白
能否理解为
A= A + B
B =(A+B)- B
A =(A+B)- B
红色的代表同一单元
[/Quote]
可以
sincor
2009-01-18
打赏
举报
回复
A = A + B
B = A - B
A = A - B
没有看明白
能否理解为
A
= A + B
B =
(A+B)
- B
A =
(A+B)
- B
红色的代表同一单元
AlwaysSLH
2009-01-18
打赏
举报
回复
不使用额外变量交换两个数的值:
1,A = A + B
B = A - B
A = A - B
2,A ^= B
B ^= A
A ^= B
数组的交换就是数的交换的重复吧
实验8 一维
数组
(1).docx
实验8 一维
数组
(1).docx
c++基础学习之动态
数组
最近新到公司,带教老师让我写动态
数组
,哇,给我的感觉真的是,底层的东西,要求性能和代码规范比较严,下面是代码。 我会写很详细的注释,方便以后自己观看。希望各位
请教
了。 MyArray.h #ifndef MYARRAY_H #define MYARRAY_H #include <iostream> //函数后面加const表示函数不改变类中的成员
变量
//参数里面加cons...
C/C++中参数传递的一点点理解
以C/C++中
交换
两个
变量
的
值
为例子 最近重新学习数据结构,因为大多数都是以C语言讲解的,我就又捡C语言回来看了一下,发现对指针的理解还是有点没到位,就不停的查例子,
请教
别人验证自己的理解后,姑且觉得差不多了,就来写个小总结,当我的第一篇博客吧。 写的不好,不对的地方还多请各位大哥指正!!! …分割线… C/C++语言中函数参数传递的三种方式
值
传递 所谓
值
传递,就是说形参只是复制了实参的
值
,改变形参的
值
,并不会影响到实参本身。从函数调用的方面来说,
值
传递是单向的, 即实参–>形参,只能传入参数的
快速排序算法
快速排序算法原理 快速排序分为以下几个步骤: 从
数组
选定一个
值
,作为基准,选定
两个
变量
i,j,分别指向
数组
的头和尾; 找到第一个比基准小的
值
,如果没找到就j–直到找到为止; 找到一个比基准大的
值
,如果没找到就i++直到找到为止;
交换
这个
两个
值
; 重复2、3、4三步,直到i>=j停止,此时
数组
的前半部分比基准
值
小,后半部分比基准
值
大; 对前后两部分重复上面的步骤,当前后两部分都有序以后,整个
数组
就有序了。 代码实现 这里实现的与上面有点不一样,这里是按降序来排列的,上面的描述是升序的。 publi
C语言简单算法之
数组
中偶数的和,输出小于均
值
的数,将
数组
中的数逆序存放, 求最大
值
及其下标,
交换
最小
值
和最大
值
,选择法排序,求矩阵各行元素之和,方阵左下三角元素的和,求整数序列中出现次数最多的数
##【1】 ##题目一
数组
中偶数的和 1.实验代码 #include<stdio.h> int main() { int i,sum=0; int a[10]; for(i=0;i<10,i++) { scanf("%d",&a[i]); if(a[i]%2==0){ sum=sum+a[i];} } printf("s=...
数据结构与算法
33,028
社区成员
35,336
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章