看板 C_and_CPP 關於我們 聯絡資訊
: //myoco315教的:不用tmp交換兩個變數的值 : nums[min]^=nums[j]^=nums[min]^=nums[j]; 上面提供的這個方法真的很不錯, 給了敝人一個思考的空間 感謝原作者 不過敝人發現用一個tmp來交換兩個數值在速度上快了一點點(犧牲空間換取時間) 以下是反譯組的程式碼 int a = 1, b = 2, t=0; 004141CE mov dword ptr [a],1 004141D5 mov dword ptr [b],2 004141DC mov dword ptr [t],0 ---------------------------------以下是用xor的方法---------- a ^= b ^= a ^= b; 004141E3 mov eax,dword ptr [a] 004141E6 xor eax,dword ptr [b] 004141E9 mov dword ptr [a],eax 004141EC mov ecx,dword ptr [b] 004141EF xor ecx,dword ptr [a] 004141F2 mov dword ptr [b],ecx 004141F5 mov edx,dword ptr [a] 004141F8 xor edx,dword ptr [b] 004141FB mov dword ptr [a],edx --------------------------以下是用tmp---------- t=a; 00414213 mov eax,dword ptr [a] 00414216 mov dword ptr [t],eax a=b; 00414219 mov eax,dword ptr [b] 0041421C mov dword ptr [a],eax b=t; 0041421F mov eax,dword ptr [t] 00414222 mov dword ptr [b],eax 看來這世上真的沒有兩全其美的事情 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.132.158.129
costbook:myoco315的方法是為了解題目:不使用條件判斷式交換兩數 06/29 12:04
costbook:那個題目也是蠻好玩的 06/29 12:06
drkkimo:這篇很有趣~:) 高階語言有時候看起來比較快的作法只是表面 06/29 12:13
drkkimo:上的~~:) 06/29 12:13
costbook:這系列...是有史以來最多正解的作業文了吧 06/29 12:19
drkkimo:這篇要不要收… 我想一下 本來覺得可以給新手參考 06/29 12:44