?int?a[]={49,38,65,97,76,13,27,49,78,34,12,64,5,4,62,99,98,54,56,17,18,23,34,15,35,25,53,51};??
????int?temp=0;??
????for(int?i=0;i<a.length-1;i++){??
????????for(int?j=0;j<a.length-1-i;j++){??
????????if(a[j]>a[j+1]){??
????????????temp=a[j];??
????????????a[j]=a[j+1];??
????????????a[j+1]=temp;??
????????}??
????????}length減一什么意思呢
4 回答
已采納

gallonyin
TA貢獻1條經驗 獲得超0個贊
如果沒看錯這應該是冒泡排序,因為計算機是順序執行的,所以我們可以分解來看,只看 i = 0 的時候
i = 0, j 的循環是 ?0 到 length - 1 - 0 ? ? ?
也就是說在這次循環中要做一下判斷 a[0] > a[1] ?那么交換 ?a[1] > a[2] 那么交換 ........ a[length - 1] > a[length] 那么交換
到此,可以保證一點:a[length] 一定是該數組中的最大值
第二步 i = 1, j 的循環是 0 到 length - 1 - 1
也就是判斷 a[0] > a[1] 交換 ?a[1] > a[2] 交換 ...... a[length - 2] > a[length -1] 交換 ?
到此,可以保證: a[length - 1] 一定是該數組中的最大值 (a[length]已經被排除在外)
第三步 i = ...?
結束后的數組就是 從小到大順序排列了?
如果沒思路就動手照著計算機的執行順序寫一寫

qq_在迷宮_0
TA貢獻4條經驗 獲得超1個贊
打印一下數組的長度,數組長度是里面存放的數據的個數的,而里面數據的索引是從0開始的,索引到最后一個是數據的個數-1,你數數是從1開始數的嘛,然而索引從0開始的,所以要減一咯
添加回答
舉報
0/150
提交
取消