在計算機程序設計和計算機科學中,標準交換是程序中兩個變量需要交換它們的值的一種情況,要求創建第三個變量作為值轉移時的中介。標準交換是一種編程范式,意味著它可以應用于任何情況下兩段數據需要交換,并且不綁定到任何...
在計算機程序設計和計算機科學中,標準交換是程序中兩個變量需要交換它們的值的一種情況,要求創建第三個變量作為值轉移時的中介。標準交換是一種編程范式,意味著它可以應用于任何情況下兩段數據需要交換,并且不綁定到任何一種數據類型或編程語言。在程序中有許多實例需要交換值,但當與排序算法一起使用時,它通常是集合和數組中的標準組件,排序算法必須使用保存要交換的值的臨時變量。從硬件角度看,標準交換可以是某些標量數據類型(如整數)支持的低級處理器函數,這意味著不需要在隨機存取內存(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
- 閱讀 ( 570 )
- 分類:電腦網絡