int array[]=new int[]{9,2,3,1,0,5,8,4,7,6};//初始化一个数组,长度为10
int temp;//定义一个临时变量,
System.out.println("原有数组内容:");//输出这几个汉字
printArray(array);//调用printArray方法,并将前面初始化的数组作为参数传递给该方法
for(int i =1;i<array.length;i++){//这里应该是算法的核心了,但是如果想理解,还是先看看内层的循环,
for(int j =0;j<array.length-i;j++){//循环了0到数组长度10-1 一共10次
if(array[j]>array[j+1]){//数组的第一个元素a[0]与第二个元素a[1]做比较,如果大于,第2个元素
temp=array[j];//那么将大的那个值a[0]的值赋值给临时变量
array[j]=array[j+1];//再将a[1]的值赋值给a[0]
array[j+1]=temp;//最后把临时变量中的值复制给a[1]
//看懂这里了吗?如果前面的数,或者形象点a[0] ,a[1],..依次往上排,那么就是如果排在下面的数组元素的值大于上面的数组元素的值那么就将这两个元素的位置换一下,大的放上面,也就是排在数组的后面,像不像冒泡,水中的气泡,越到上面越大;如果小的话当然就没关系了,还是小的在下面
}
//这一次内层循环做完之后,保证了最下面的气泡(数组元素的位置),它跟后面所有的元素都做了一次比较,如果它最大就能排到最上面
}
//最外层的循环保证了,从头到尾将所有的数组元素按照从前到后,或者从下到上的顺序都与后面的元素比较了一次,这就完成了所有元素的排序
}
System.out.println("从小到大排序后的结果:");
printArray(array);
}
private static void printArray(int[] array) {//来看看,这个方法做了什么,在上面调用这个方法的时候已经将你初始化的那个长度为10的数组做为参数传递了进来
// TODO Auto-generated method stub
for(int i : array){//用增强for循环,遍历这个数组
System.out.print(i+" ");//一次打印i的值和空格
}
System.out.println("\n");//都遍历结束后,换行
}
|