java選擇排序中 int t=a[i] a[i]=a[j] a[j]=t ,這段話不懂
uj5u.com熱心網友回復:
把a[i]的值賦予t
把a[j]的值賦予a[i]
最后把t值賦予a[j]
這個是a[i]值和a[j]交換的基本演算法,其他編程也有啊!
uj5u.com熱心網友回復:
其實這個主要看你的邏輯能力:
這段代碼的作用有兩個:防止覆寫,交換值。
首先a[i]賦值給t,然后a[j]賦值給a[i],這個時候a[i]原本的值給了t,防止被覆寫,因為a[j]的值覆寫了a[i]的值。
然后,t再把值賦值給a[j],而這個值是原本a[i]沒被覆寫之前的值。
所以你發現了沒有,其實t只是一個中間變數,而這段代碼的作用只是交換a[i]和a[j]二者的值,之所以引出t是為了防止a[i]的舊值被覆寫!
uj5u.com熱心網友回復:
我不懂啊,我剛學Java,能講的再詳細點嗎
uj5u.com熱心網友回復:
你是自學還是計算機專業的,如果你是剛接觸編程語言,這沒啥。但是如果你接觸過,就知道這段代碼和什么編程語言無關,邏輯問題而已。
uj5u.com熱心網友回復:
你是自學還是計算機專業的,如果你是剛接觸編程語言,這沒啥。但是如果你接觸過,就知道這段代碼和什么編程語言無關,邏輯問題而已。
我剛接觸啊,。。。。。。。
uj5u.com熱心網友回復:
你是自學還是計算機專業的,如果你是剛接觸編程語言,這沒啥。但是如果你接觸過,就知道這段代碼和什么編程語言無關,邏輯問題而已。
我剛接觸啊,。。。。。。。
沒事兒,慢慢來,上面我給你講的看得懂不?看不懂的話,你這樣做:假如要你交換a[i]和a[j]這兩個的值,那你會怎么做?(提示一下:別忘了賦值會覆寫原本的值)
uj5u.com熱心網友回復:
這就是相當于把t作為中間變數,來實作a[i]和a[j]的值的交換,先把a[i]賦值給t,此時t=a[i],然后把a[j]的值賦值給a[i],此時a[i]和a[j]相等,但是后來又把t的值賦值給了a[j],這個時候a[j]的值與a[i]最開始的值一樣,這樣就實作了兩個數的互換。uj5u.com熱心網友回復:
打個比方吧 ,把t看作1個人,a[i]和a[j]看作另外2個人,他們都只有一只手,t手里沒拿東西,a[i]和a[j]手里都拿著的東西,現在a[i]和a[j]想交換手里的東西,怎么辦?方法其實很簡單,就是a[i]把自己手里的東西交給t(t=a[i]),然后a[j]把自己手里的東西交給a[i](a[i]=a[j]),然后t再把手里的東西交給a[j](a[j]=t),這樣是不是就達到了a[i]和a[j]交換手里東西的目的?
uj5u.com熱心網友回復:
我不懂啊,我剛學Java,能講的再詳細點嗎
舉個例子來說,比如從大到小排列
一個a數列 3,2,5,4,6,1
一般是雙回圈,i從0-5,j從i+1到5;
當i=0時
a[i]=3
j從1開始
當j等于1的時候a[1]=2 ,這時候a[i]>a[j],雙方不用交換,當j=2時 ,a[i]=3 小于,a[j]=5,這里時候雙方需要交換值,把最大值放最前面,為了雙方能進行值交換時不丟失原值,這時候需要引入一個中間值t。
先把a[i]的值3,賦予t變數,這時候t=3
然后把a[j]的值5賦予a[i],這時候a[0]=5,
最后把t的值3賦予a[j],a[2]=3
這樣a[0]的值和a[2]的值就被交換了。
交換后數列變為 5,2,3,4,6,1然后繼續比較,最終a[0]的值變為最大值6,然后再開始排次大值a[1].
話說這是基礎中的基礎,你的基礎太差了,好好補補吧
uj5u.com熱心網友回復:
你是自學還是計算機專業的,如果你是剛接觸編程語言,這沒啥。但是如果你接觸過,就知道這段代碼和什么編程語言無關,邏輯問題而已。
我剛接觸啊,。。。。。。。
沒事兒,慢慢來,上面我給你講的看得懂不?看不懂的話,你這樣做:假如要你交換a[i]和a[j]這兩個的值,那你會怎么做?(提示一下:別忘了賦值會覆寫原本的值)
我是自己學的,買了一本書,Java從入門到精通,就看了一遍,你有什么好的學習建議,可以教教我嗎
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/149282.html
標籤:Java相關
上一篇:java小題目,求大神指教
下一篇:運行AVd模擬器出現亂碼
