3 回答

TA貢獻(xiàn)79條經(jīng)驗(yàn) 獲得超122個(gè)贊
你好。實(shí)際上這種問(wèn)題進(jìn)行一下手動(dòng)模擬,答案呼之而出。
雙重循環(huán),i初始化為0,j初始化為8所以,if中判斷arr[0]=12是否大于arr[8]=3 既然大于,兩者進(jìn)行交換。此時(shí)arr[0] = 3,J-1 = 7;循環(huán)繼續(xù),直到j(luò) = i時(shí)循環(huán)停止。
此時(shí)當(dāng)然應(yīng)該停止,既然j和i相等兩者比較無(wú)意義,而且重要的是我們已經(jīng)將最小的一個(gè)數(shù)排在了第1位,既然第1位是最小的,接下來(lái)i = 1時(shí)我們還需要比較第一位arr[0]嗎?答案是不需要,所以,j>i終止條件優(yōu)化了在時(shí)間上的效率。

TA貢獻(xiàn)11條經(jīng)驗(yàn) 獲得超9個(gè)贊
減少循環(huán)次數(shù),提高代碼效率。
i之前的數(shù)組元素是已經(jīng)被排序過(guò)的,肯定都是小于之后的數(shù)的,所以就不用再參加循環(huán)了
順便,這個(gè)可以不聲明第三個(gè)變量來(lái)交換兩個(gè)元素的位置如下
arr[i]+=arr[j]; arr[j]=arr[i]-arr[j]; arr[i]-=arr[j];
這樣只能比較數(shù)字

TA貢獻(xiàn)2條經(jīng)驗(yàn) 獲得超0個(gè)贊
個(gè)人覺(jué)得:這個(gè)for循環(huán)是 08,17,26,35,44依序?qū)Ρ鹊?,開(kāi)始的時(shí)候:i=0,j=8,然后依序變化,如果i=j(即44)就不需要對(duì)比了,而i>j時(shí)就是53了,和前面的35對(duì)比組重復(fù)了,所以j要大于i。
添加回答
舉報(bào)