關於數組排序的問題。。
提問者:勾勾手不棄晗 | 瀏覽 次 | 提問時間:2017-02-18 | 回答數量:9
1 public class A{ 2 public static void main(String[] args){ 3 int arrayOflnts[] = {32,87,589,12,1076,2000,8,622,127}; 4 int temp; 5 for(int i=0;i<arrayOflnts.length;i++){ 6 for(int j=arrayOflnts.length-1;j>i;j--){ //i和j分別是用來代表什麼的呢? 7 if(arrayOflnts>arrayOflnts[j]){ //不懂 8 temp = arrayOflnts; 9 arrayOflnts = arrayOflnts[j]; 10 arrayOflnts[j] = temp; 11 } 12 } 13 } 14 for(int k=0;k<9;k++){ 15 System.out.print(arrayOflnts[k] + \"
已有9條答案
天掉下來自己扛
回答數:217 | 被采納數:86
2017-02-18 02:21:13
[s:462] [s:462] [s:462] [s:462]
不懂java,不過 if(arrayOflnts>arrayOflnts[j]){ 看起來有語法錯誤
if(arrayOflnts>arrayOflnts[j]){ //這個if語句是判斷什麼的呢?
temp = arrayOflnts;
arrayOflnts = arrayOflnts[j];
arrayOflnts[j] = temp;
這句初看應該是一個比較兩個數字大小的,如果前麵的數字大於後麵的,則把它們的順序交換
這個程序是用冒泡算法的排列數字大小,但是裏麵有錯誤
if(arrayOflnts>arrayOflnts[j]){
temp = arrayOflnts;
arrayOflnts = arrayOflnts[j];
arrayOflnts[j] = temp;
應該是這樣才對
wenyuans96
回答數:145 | 被采納數:4
2017-02-18 11:43:29
for(int j=arrayOflnts.length-1;j>i;j--){ // (1)注:分別用1和2來代替之兩個地方
if(arrayOflnts>arrayOflnts[j]){ // (2)
這是一個冒泡排序,分為兩個循環:
(1)是第二個循環。
(2)是判斷這個數組是按升序,還是按降序排列的。
我在這裏為兩個循環舉個例子如:1,2,3,4,5我用冒泡降序排列出來
1,2,3,4,5
2,1,3,4,5
2,3,1,4,5
2,3,4,1,5
2,3,4,5,1
現在,把2排上出
3,2,4,5,1
3,4,2,5,1
3,4,5,2,1
。。。。。類推。。。
把1,2,等排上出叫做第一個排列
而,把1排上去要又五次排列這個排列叫做第二個排列。
hell永遠存在
回答數:128 | 被采納數:82
2017-02-18 19:51:12
我覺得第二個for循環
要改改
for(int j=arrayOflnts.length-1;j>i;j--)
改成
for(int j=i+1;j<=arrayOflnts.length;j++)
1 public class A{ //類名
2 public static void main(String[] args){ //方法名
3 int arrayOflnts[] = {32,87,589,12,1076,2000,8,622,127}; //定義一個數組函數,有9個值。
4 int temp; //定義一個中間變量
5 for(int i=0;i<arrayOflnts.length;i++){ //定義臨時變量i,i小於數組的長度9;
6 for(int j=arrayOflnts.length-1;j>i;j--){ //i和j分別是用來代表什麼的呢?
/*
*這裏定義的臨時變量j,給的初始值是等於數組的長度9減1,即8;且要求j>i才能進入循環
*/
7 if(arrayOflnts>arrayOflnts[j]){ //這段對比是正確的,我好像在哪看過。不過我給不出一共理由。
8 temp = arrayOflnts;
9 arrayOflnts = arrayOflnts[j];
10 arrayOflnts[j] = temp;
11 }
12 }
13 }
//這個循環是為了打印需要。
14 for(int k=0;k<9;k++){
15 System.out.print(arrayOflnts[k] + " ");
16 }
17 System.out.println();
18 }
19 }
+++++++++++++++++++++++++++++++++++++++++++
第二行:
public static void main(String[] args){
規範寫法(不算錯誤):
public static void main(String args[]){
第六行:
for(int j=arrayOflnts.length-1;j>i;j--){ //i和j分別是用來代表什麼的呢?
i和j是分別對函數定義的兩個臨時變量,標記數組的。
1 public class A{
2 public static void main(String[] args){
3 int arrayOflnts[] = {32,87,589,12,1076,2000,8,622,127};
4 int temp;
5 for(int i=0;i<arrayOflnts.length;i++){
6 for(int j=arrayOflnts.length-1;j>i;j--){
// 這裏的for循環 可不可以改為:for(int j=0;j<arrayOflnts.length;j++)
7 if(arrayOflnts>arrayOflnts[j]){ //如果一個數大於其他的數 是不是這樣理解?
// 下麵的這三句代碼 是不是排序呢? 是怎麼實現的呢?
8 temp = arrayOflnts; //將值大的數賦給temp 是不是這樣理解?
9 arrayOflnts = arrayOflnts[j]; //這個是什麼意思呢?
10 arrayOflnts[j] = temp; //這個又是什麼意思呢?
11 }
12 }
13 }
14 for(int k=0;k<9;k++){
15 System.out.print(arrayOflnts[k] + " ");
16 }
17 System.out.println();
18 }
19 }