2014-01-22 31 views
0

下面是我的排序程序。请告诉我这个计划的逻辑。我在ij的位置混淆。用于循环的arraylist排序

public class Ascending { 

    public static void main(String args[]) { 

    int[] arVal = {20, 45, 34, 89, 34, 42}; 
    int i; 
    int y; 
    int temp; 

    System.out.println("Ascending Order is:"); 

    for (i = 0; i < arVal.length; i++) { 


     for (y = i + 1; y < arVal.length; y++) { 

      temp = arVal[i]; 

      if (arVal[i] > arVal[y]) { 

       temp = arVal[i]; 
       arVal[i] = arVal[y]; 
       arVal[y] = temp; 
      } 

     } 
    } 
    for (i = 0; i < arVal.length; i++) { 

     System.out.println(arVal[i]); 

    } 
} 
} 

回答

0

它与所有其他20 with 45 34 89 etc结束时,如果20的每个元素进行比较大的是它
互换的地方。所以在第一次迭代之后没有任何反应,因为20是较小的一个。
在i = 1,45比34为此20较大,,,89,34,42和现在比较
不45与89,没什么,用34没有42没有。 I = 2,45等...

伪代码:

arVal[0] = min{20 45 34 89 34 42} = 20 
arVal[1] = min{45 34 89 34 42} = 34 
arVal[2] = min{45 89 34 42} = 34 
arVal[3] = min{45 89 42} = 42 
arVal[4] = min{45 89} = 45 
arVal[5] = 89 
+0

感谢解释.. – user3219005