12 5 17 8 9将该组数进行从大到小的排序。
思路:使用索引值为0的元素与其他位置的元素进行比较,如果比索引值为0的元素大,则进行位置的交换。
首先12 5 17 8 9 为第一轮,本轮12分别与其余数字进行比较大小如果遇到比他大的则进行位置交换,一共比较4次,即小于数组长度大小。结果是17 5 12 8 9
1 for(int i=1;i<arr.length;i++) 2 { 3 if(arr[i]>arr[0]) 4 { 5 int temp=arr[i]; 6 arr[i]=arr[0]; 7 arr[0]=temp; 8 } 9 }
注意:arr[0]就是值数组的第一个数,即12.
第二轮:17 5 12 8 9 其中17已经是数组当中的最大值,不再参与比较,从5开始进行比较,5分别与12 8 9 进行比较,比较次数为3 ,遇到比自己大的就会进行位置交换。结果:17 12 5 8 9.
代码:
1 for(int i=2;i<arr.length;i++) 2 { 3 if(arr[i]>arr[1]) 4 { 5 int temp=arr[i]; 6 arr[i]=arr[1]; 7 arr[1]=temp; 8 } 9 }
第三轮:17 12 5 8 9 进行比较,其中17 12 不再参与比较,从5开始进行,5分别与8 9 进行比较,比较次数为2次,遇到比自己大的则进行位置交换。结果:17,12,9,5,8
代码:
1 for(int i=3;i<arr.length;i++) 2 { 3 if(arr[i]>arr[2]) 4 { 5 int temp=arr[i]; 6 arr[i]=arr[2]; 7 arr[2]=temp; 8 } 9 }
第四轮:17 12 9 5 8进行比较,17 12 9 不再参与比较,只有5与8 进行比较,比较一次,如果8比5大,就位置交换。结果:17 12 9 8 5
综上:一共5个数字比较了4轮,每一轮的比较方法都是一样的,
代码:
1 public class 练习2 { 2 3 public static void main(String[] args) { 4 // TODO Auto-generated method stub 5 6 int[] arr={12,5,17,8,9}; 7 paiXu(arr); 8 } 9 10 public static void paiXu(int[] arr) 11 { 12 for(int j=0;j<arr.length-1;j++)//控制循环的轮数 13 { 14 for(int i=j+1;i<arr.length;i++)//找出每一轮的最大值 15 { 16 if(arr[j]<arr[i]) 17 { 18 int temp=arr[j]; 19 arr[j]=arr[i]; 20 arr[i]=temp; 21 } 22 } 23 } 24 25 //效果检验 26 for(int i=0;i<arr.length;i++) 27 { 28 System.out.println(arr[i]+","); 29 } 30 31 } 32 }
下面是从小到大的排序代码:
1 public class 练习3 { 2 3 public static void main(String[] args) { 4 // TODO Auto-generated method stub 5 6 int[] arr={12,5,17,8,9}; 7 paiXu(arr); 8 } 9 public static void paiXu(int[] arr) 10 { 11 for(int j=0;j<arr.length-1;j++) 12 { 13 for(int i=j+1;i<arr.length;i++) 14 { 15 if(arr[j]>arr[i]) 16 { 17 int temp=arr[j]; 18 arr[j]=arr[i]; 19 arr[i]=temp; 20 } 21 } 22 } 23 for(int i=0;i<arr.length;i++) 24 { 25 System.out.println(arr[i]); 26 } 27 28 } 29 30 }