演算法基礎 --- 從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
- 從零開始-基礎流程圖編輯庫流程圖
- Re:從零開始的Linux之路(基礎篇)Linux
- Java 執行緒基礎,從這篇開始Java執行緒
- 從零開始——GO語言基礎語法Go
- 從零開始學AB測試:基礎篇
- Kotlin基礎篇——從型別系統開始Kotlin型別
- 從零開始學 Python 之基礎語法Python
- 從零開始搭建React應用(一)——基礎搭建React
- Python打牢基礎,從19個語法開始!Python
- 資料分析從零開始實戰 | 基礎篇(三)
- 資料分析從零開始實戰 | 基礎篇(二)
- 資料分析從零開始實戰 | 基礎篇(一)
- 從零開始學Linux運維難嗎?Linux基礎Linux運維
- javaSE從零開始04_java的基礎語法Java
- 從演算法開始[快速排序]演算法排序
- Python開發打牢基礎,從這些個語法開始!Python
- 從零開始學黑蘋果-基礎安裝教程(10.11.6)蘋果
- 從0開始的高併發(一)--- Zookeeper的基礎概念
- 從演算法開始(插入排序)演算法排序
- 從演算法開始[選擇排序]演算法排序
- 從演算法開始[歸併排序]演算法排序
- 從演算法開始 [氣泡排序]演算法排序
- 從演算法開始[氣泡排序]演算法排序
- 從演算法開始[插入排序]演算法排序
- 0基礎應該怎麼學Linux?Linux如何從零開始?Linux
- 從 0 開始寫 AI 評測平臺 -- streamlit 基礎介紹AI
- 二、javase基礎知識總結(從檔案 I/O開始)Java
- 「基礎搭建」從零開始,基於 Webpack5 搭建一個 Vue-CliWebVue
- WebGL基礎(一): 從一個滑鼠畫點開始瞭解原生webGLWeb
- 【PYTHON】語法基礎 | 開始使用PythonPython
- 不怕從零開始,只怕從未開始!
- 從零開始教你用vuepress搭建自己的部落格(1)—基礎篇Vue
- 注重程式碼習慣,Python零基礎從這本書籍開始!Python
- Draft 文件翻譯 - 快速開始 - 基礎APIRaftAPI
- 從零開始React:一檔 React環境搭建,語法規則,基礎使用React
- 對於零基礎的朋友,新媒體運營從哪開始入手?
- 【Python零基礎】19天從零開始學Python——第一天Python