2022-01-24 11:15:56|已瀏覽:2158次
編寫高效簡潔的C語言代碼,是許多軟件工程師追求的目標。本文就工作中的一些體會和經驗做做了一下三個問題,對其進行了優化,不對的地方請各位指教。
<1>.輸出 int 型數組a的元素個數很容易可以想到數組元素個數有奇偶之分,那么可以這樣填:(n%2==1)?(n/2+1):(n/2) 這樣寫當然沒有錯,只是有些繁瑣,而且條件運算符的三個部分都要用括號括起來,否則會出現語法錯誤,這樣的代碼當然就不夠好了。那么要怎么寫?
其實這類問題可以用數學知識來解決:n為奇數時后半段起始下標是 /2+1,為偶數則是 n/2+0,n為奇數時加的1和n為偶數時加的0可以看成是他本身對2取余,所以可以填: /2+(n%2)。好像還是不夠好看,再想一下還可以怎么優化呢:一個奇數和比它小1的偶數除以2得到相同的數,那么如果n是奇數, n/2+1 和 (n+1)/2 等價,如果n是偶數, n/2+0 和 (n+1)/2 等價,于是這里可以這樣填了: (n+1)/2。
再補充說一個小的點,在 (n%2==1)?(n/2+1):(n/2) 中 n%2==1 就等價于 n%2 ,它們的值是一樣的,總結一下就是n==1等價于n,而n==0就等價于!n,這樣寫可以避免使用==號帶來的容易錯寫成=賦值號造成答案錯誤的問題,提高了代碼的安全性。for(int i=0;i<5*k;i++) printf("%d ",a[i%5]);
這樣就變成了一重循環啦,降低了時間復雜度而且也沒有提高空間復雜度,代碼效率自然就變高了。
注:尊重原創文章,轉載請注明出處和鏈接 http://m.dedgn.cn/news-id-17704.html 違者必究!部分文章來源于網絡由培訓無憂網編輯部人員整理發布,內容真實性請自行核實或聯系我們,了解更多相關資訊請關注c語言頻道查看更多,了解相關專業課程信息您可在線咨詢也可免費申請試課。關注官方微信了解更多:150 3333 6050