#3991: 三元運算子的差異


example (學姊)

學校 : 臺北市立麗山高級中學
編號 : 6634
來源 : [60.250.138.144]
最後登入時間 :
2022-08-09 17:07:42
d750. 11321 - Sort! Sort!! and Sort!!! -- UVa11321 | From: [118.166.112.238] | 發表日期 : 2010-07-14 17:00

 以下是我 C 語言的兩段程式碼

 100 ms 版本 

  1. int cmp(Number a, Number b) {  
  2.     if(a.remainder > b.remainder)  
  3.         return 1;  
  4.     else if(a.remainder < b.remainder)  
  5.         return 0;  
  6.     else if(a.isOdd && !b.isOdd)  
  7.         return 0;  
  8.     else if(!a.isOdd && b.isOdd)  
  9.         return 1;  
  10.     else if(a.isOdd && b.isOdd)  
  11.         return a.key < b.key;  
  12.     else if(!a.isOdd && !b.isOdd)  
  13.         return a.key > b.key;  
  14.     else  
  15.         return -1;  
  16. }  

 49 ms 版本

  1. int cmp(Number a, Number b) {  
  2.     if(a.remainder > b.remainder)  
  3.         return 1;  
  4.     else if(a.remainder < b.remainder)  
  5.         return 0;  
  6.     else if(a.isOdd && !b.isOdd)  
  7.         return 0;  
  8.     else if(!a.isOdd && b.isOdd)  
  9.         return 1;  
  10.     else if(a.isOdd && b.isOdd)  
  11.         if(a.key > b.key)  
  12.             return 0;  
  13.         else  
  14.             return 1;  
  15.     else if(!a.isOdd && !b.isOdd)  
  16.         if(a.key > b.key)  
  17.             return 1;  
  18.         else  
  19.             return 0;  
  20.     else  
  21.         return -1;  
  22. }

 其餘程式碼一模一樣

 但是為什麼會有如此大的差異?

 ps 我在 Uva/acm 上的結果依序為 0.392 s, 0.412 s ( 反而是前者略快於後者 )

 
ZeroJudge Forum