在计算机程序设计和计算机科学中,标准交换是程序中两个变量需要交换它们的值的一种情况,要求创建第三个变量作为值转移时的中介。标准交换是一种编程范式,意味着它可以应用于任何情况下两段数据需要交换,并且不绑定到任何...
在计算机程序设计和计算机科学中,标准交换是程序中两个变量需要交换它们的值的一种情况,要求创建第三个变量作为值转移时的中介。标准交换是一种编程范式,意味着它可以应用于任何情况下两段数据需要交换,并且不绑定到任何一种数据类型或编程语言。在程序中有许多实例需要交换值,但当与排序算法一起使用时,它通常是集合和数组中的标准组件,排序算法必须使用保存要交换的值的临时变量。从硬件角度看,标准交换可以是某些标量数据类型(如整数)支持的低级处理器函数,这意味着不需要在随机存取内存(RAM)中创建中间值来交换两个数。标准交换是一种编程范式,这意味着它可以应用于需要交换两个数据的任何情况。标准交换的概念可以用变量a和B来表示;在标准交换结束时,B应该等于a,a应该等于B。如果程序只是简单地将B赋给a,那么a的值将丢失,以后不能分配给B当B被分配给a时,需要使用一个临时变量来保存a的值。最后一步是将临时变量值分配给B,完成交换。标准交换的一个非常常见的应用是在数组或集合上使用排序算法时。如果排序算法确定数据at数组的索引1必须与索引10处的数据交换,然后才能执行数据的标准交换。使用C等语言中的指针引用可以非常快速地完成此操作在某些面向对象编程语言中,当需要交换两个对象实例时,可能会出现一个复杂的情况。在一些非常罕见的情况下,简单地交换对象引用并不会启动实际的交换。相反,交换对象的唯一方法是逐字段克隆内部数据,在两个对象和临时对象变量之间。有一种技术在技术上可用于使用异或(异或)逻辑运算符执行标准交换。异或交换依赖于这样一个事实:当用异或计算两个位时,它们本质上会创建一个可以用一个或两个运算符反转的掩码。这样,两个变量a和B可以交换,方法是先用两个变量的“异或”创建一个掩码,然后使用“异或”先取消对B的值的掩码,然后对a的值进行取消掩码。不幸的是,尽管这种方法避免了创建临时变量变量,它也不会在所有实例中进行交换,特别是当a和B彼此相等时,以及在编译器优化可能改变实际操作的情况下
-
发表于 2020-08-07 15:53
- 阅读 ( 979 )
- 分类:电脑网络