亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

這一段 i 為啥么是從8開始循環,temp好像也沒什么用啊

?for(i=8; i>=0; i--)

? ? {

? ? ? ? for(j=0;j<=i;j++)

? ? ? ? {

? ? ? ? ? ? if(arr[j] > arr[j+1])? ? ? //當前面的數比后面的數大時

? ? ? ? ? ? {

? ? ? ? ? ? ? ? double temp;? ? //定義臨時變量temp

? ? ? ? ? ? ? ? temp = arr[j];? ? //將前面的數賦值給temp

? ? ? ? ? ? ? ? arr[j] = arr[j+1];? ? ? ? ? ? ?//前后之數顛倒位置

? ? ? ? ? ? ? ? arr[j+1] = temp;? ? ? ? ? ? ? //將較大的數放在后面? ??

? ? ? ? ? ? }? ? ? ? ? ? ? ? ?

? ? ? ? }? ? ? ? ? ? ? ??

? ? }


正在回答

3 回答

i=8是因為后面j<=i時if里調用arr[j]和arr[j+1]比較,j+1就可以調用到第十個數了;

temp是用來交換值的,arr[j]和arr[j+1]比較后,把大的那個賦給arr[j+1],如此循環大的值就會一步一步的移到最后面實現從小到大的排序。

1 回復 有任何疑惑可以回復我~

數組是從0開始算的,一共10個數,所以當子循環里面也為8的時候可以+1這樣子就可以把最大的數排在最后面了呀

建議自己跟著程序走一遍


0 回復 有任何疑惑可以回復我~

https://img1.sycdn.imooc.com//5ccc521100017d5603630261.jpg

因為數組arr[]里有10個元素,i是元素的下標,數組第一個元素是arr[0];i=8,也就是數組里面倒數一第二個元素。

上面的圖是剛才隨手畫的;如果有N個元素

第一次冒泡,比較n-1次;、

第二次冒泡,比較n-2次;

第n-1次冒泡,比較1次;

temp就是一個盒子,先把前面的元素放盒子里,再把后面的元素給前面,最后從從盒子里把值給后面的元素,這樣就換元素了,C是不能直接把兩個值互相替換的,

應該是這樣的吧?

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

這一段 i 為啥么是從8開始循環,temp好像也沒什么用啊

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號