<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
我們已經討論了在沒有臨時變數的情況下交換兩個整數的不同方法。如何在不使用庫函數的情況下換成一行?
1) Python: 在Python中,有一個簡單且語法簡潔的結構來交換變數,我們只需要寫“x, y = y, x”。
2)C/C++: 下面是一個普遍提供的經典解決方案:
// 使用按位元互斥或交換(C/C++ 中的錯誤解決方案) x ^= y ^= x ^= y;
上述解決方案在 C/C++ 中是錯誤的,因為它會導致未定義的行為(編譯器可以自由地以任何方式執行)。原因是,如果修改之間沒有序列點,則在表示式中多次修改變數會導致未定義的行為。 但是,我們可以使用逗號來引入序列點。所以修改後的解決方案是
// 使用按位元互斥或交換(C/C++ 中的正確解決方案) // 使用逗號引入的序列點。 (x ^= y), (y ^= x), (x ^= y);
3)Java: 在Java中,子表示式求值的規則是明確定義的。左側運算元總是在右側運算元之前計算。在 Java 中,表示式“x ^= y ^= x ^= y;” 不會根據 Java 規則產生正確的結果。它使 x = 0。但是,我們可以使用“x = x ^ y ^ (y = x);” 請注意,表示式是從左到右計算的。如果最初 x = 5 和 y = 10,則表示式等價於“x = 5 ^ 10 ^ (y = 5);”。請注意,我們不能像在 C/C++ 中那樣在 C/C++ 中使用 this,它沒有定義左運算元或右運算元是否由任何運運算元執行
4)JavaScript: 使用解構賦值,我們可以簡單地使用這一行來實現交換。
[x,y]=[y,x]
C 程式實現在單行中交換兩個變數
// C 程式在單行中交換兩個變數 #include <stdio.h> int main() { int x = 5, y = 10; (x ^= y), (y ^= x), (x ^= y); printf("After Swapping values of x and y are %d %d", x, y); return 0; }
使用 XOR 交換的 C++ 程式碼
// 使用 XOR 交換的 C++ 程式碼 #include <bits/stdc++.h> using namespace std; int main() { int x = 5, y = 10; // 交換'x'和'y'以在一行中交換兩個數位的程式碼 x = x ^ y, y = x ^ y, x = x ^ y; // 列印交換的變數 cout << "After Swapping: x = " << x << ", y= " << y; return 0; }
Java程式在一行中交換兩個變數
// Java程式在一行中交換兩個變數 class GFG { public static void main(String[] args) { int x = 5, y = 10; x = x ^ y ^ (y = x); System.out.println( "After Swapping values" +" of x and y are " + x + " " + y); } }
Python 程式在一行中交換兩個變數
# Python 程式在一行中交換兩個變數 x = 5 y = 10 x, y = y, x print("After Swapping values of x and y are", x, y)
C# 程式在單行中交換兩個變數
// C# 程式在單行中交換兩個變數 using System; class GFG { static public void Main() { int x = 5, y = 10; x = x ^ y ^ (y = x); Console.WriteLine("After Swapping values " + "of x and y are " + x + " " + y); } }
PHP程式在單行中交換兩個變數
<?php // PHP程式在單行中交換兩個變數 // Driver Code $x = 5; $y = 10; ($x ^= $y); ($y ^= $x); ($x ^= $y); echo "After Swapping values of x and y are " ,$x," ", $y;
javascript 程式在單行中交換兩個變數
<script> // javascript 程式在單行中交換兩個變數 let x = 5, y = 10; (x ^= y), (y ^= x), (x ^= y); document.write("After Swapping values of x and y are ", x + " ", y); </script>
輸出
After Swapping values of x and y are 10 5
替代解決方案:
時間複雜度:O(1)
輔助空間:O(1)
到此這篇關於Python實現在一行中交換兩個變數的文章就介紹到這了,更多相關Python交換變數內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45