美文网首页程序员的日常
不使用额外空间进行数据交换

不使用额外空间进行数据交换

作者: daiw | 来源:发表于2016-04-04 21:26 被阅读45次

void inplace_swap(int *x, int *y) {

*y=*x^*y;/*Step1*/

*x=*x^*y;/*Step2*/

*y=*x^*y;/*Step3*/

《深入理解计算机系统》书中利用异或操作实现不利用额外空间进行临时存储,与熟知的求和操作交换两数值有异曲同工之妙,书中也提出这样操作不会有性能上的优势orz

void inplace_swap(int *x, int *y) {

*y=*x+*y;/*Step1*/

*x=*y-*x;/*Step2*/

*y=*y-*x;/*Step3*/

相关文章

  • 不使用额外空间进行数据交换

    void inplace_swap(int *x, int *y) { *y=*x^*y;/*Step1*/ *x...

  • 622.实现一个循环队列

    借鉴别人的思路:思路主旨:不牺牲任何1个存储空间不浪费1个空间,但这样需要对队列状态的判断进行额外的处理。首先明确...

  • 27. 移除元素

    解题思路 说实话,不要使用额外的数组空间,你必须仅使用O(1)额外空间并 原地 修改输入数组,这句没看懂。第一次理...

  • 算法必知 --- 归并排序(优化与案例)

    算法描述 使用归并排序进行升序排列。 示例: 算法设计 基本思路:借助额外空间,合并两个有序数组,得到更长的有序数...

  • 【链表】--k个一组反转(hard)

    思路:考察链表反转 链表反转 你的算法只能使用常数的额外空间。你不能只是单纯的改变节点内部的值,而是需要实际进行节...

  • 给定一个链表,判断链表中是否有环

    1.开辟字典,有额外空间 2.快慢指针,没有额外空间

  • Redis读写期间键空间的维护

    当使用Redis命令对数据库进行读写时,服务器不仅会对键空间执行指定的读写操作,还会执行一些额外的维护操作。 读取...

  • 单链表逆序非递归实现和递归实现

    “单链表逆序”问题。要求不能使用额外的节点存储空间,如何在不使用额外存储节点的情况下使一个单链表的所有节点逆序?我...

  • json看这个就够了

    Json数据格式 json是一种与编程语言无关的数据交换的格式。使用ajax进行前后台数据交换,移动端与服务端的数...

  • 复杂链表的复制

    时间复杂度为O(n),需要额外空间O(n) 时间复杂度O(n),无额外空间

网友评论

    本文标题:不使用额外空间进行数据交换

    本文链接:https://www.haomeiwen.com/subject/dffplttx.html