演算法基礎 --- 從swap開始
需求: 輸入a b 輸出 b a
常規交換
/*
*臨時交換
*優點:沒有缺陷
*缺點:需要臨時變數
*/
function tpSwap(a, b){
let tmp = a;
a = b;
b = tmp;
}
加減交換
/*
*算術交換
*優點:不需要藉助臨時變數
*缺點:a+b不能溢位
*/
function asSwap(a, b){
a = a + b; // a = a + b
b = a - b; // b = a + b - b => a
a = a - b; // a = a + b - a => b
}
異或交換
/*
*異或交換
*優點:不需要藉助臨時變數
*缺點:互動雙方不能相等
*/
function eoSwap(arr, a, b){
a = a ^ b; // a = a ^ b
b = a ^ b; // b = (a ^ b) ^ b => a
a = a ^ b; // a = (a ^ b) ^ a => b
}
相關文章
- 0基礎學GUI,先從基礎開始1GUI
- Java 執行緒基礎,從這篇開始Java執行緒
- 從零開始——GO語言基礎語法Go
- 從零開始學AB測試:基礎篇
- 從零開始-基礎流程圖編輯庫流程圖
- Re:從零開始的Linux之路(基礎篇)Linux
- Kotlin基礎篇——從型別系統開始Kotlin型別
- 從零開始學 Python 之基礎語法Python
- 從零開始搭建React應用(一)——基礎搭建React
- Python爬蟲學習之旅-從基礎開始Python爬蟲
- Docker從零開始製作基礎映象之CentosDockerCentOS
- 資料分析從零開始實戰 | 基礎篇(三)
- 資料分析從零開始實戰 | 基礎篇(二)
- 資料分析從零開始實戰 | 基礎篇(一)
- Python打牢基礎,從19個語法開始!Python
- javaSE從零開始04_java的基礎語法Java
- 從演算法開始[快速排序]演算法排序
- html5 基礎開始HTML
- 從0開始的高併發(一)--- Zookeeper的基礎概念
- 一切從基礎開始Linux入門命令篇Linux
- Python開發打牢基礎,從這些個語法開始!Python
- 從演算法開始 [氣泡排序]演算法排序
- 從演算法開始[插入排序]演算法排序
- 從演算法開始[歸併排序]演算法排序
- 從演算法開始[氣泡排序]演算法排序
- 從演算法開始[選擇排序]演算法排序
- 從演算法開始(插入排序)演算法排序
- 從零開始學Linux運維難嗎?Linux基礎Linux運維
- 二、javase基礎知識總結(從檔案 I/O開始)Java
- 從零開始學黑蘋果-基礎安裝教程(10.11.6)蘋果
- 編寫 SQL 查詢:讓我們從基礎知識開始SQL
- 「基礎搭建」從零開始,基於 Webpack5 搭建一個 Vue-CliWebVue
- WebGL基礎(一): 從一個滑鼠畫點開始瞭解原生webGLWeb
- 四軸飛行diy全套入門教程(從最基礎的開始)
- 從 0 開始機器學習 - 機器學習演算法診斷機器學習演算法
- Java基礎——程式設計之路的開始,Java基礎知識Java程式設計
- 0基礎應該怎麼學Linux?Linux如何從零開始?Linux
- 從零開始教你用vuepress搭建自己的部落格(1)—基礎篇Vue