所谓的冒泡排序其实很简单,我们自己比较的时候也是拿着第一个数和剩余所有数进行逐一比较,得到最小或者最大的数。再拿第二个数进行比较......
假如有5个数,我们自己比较的话比较四轮就会出现结果,所有外层循环我们定义:
假定有一个数组a
for(int i=a.length-1;i>0;i--):a.length就是数组的个数值,这就始终控制我们比较的轮数比数组中数字的个数少1
进入当前轮次
我们会拿数一个一个的去进行比较,但是需要注意的是我们每一轮都会在剩余数组中挑出最小或者最大的那个,因此我们循环的次数也就每次都比之前少1次。
for(int j=0;j<i;j++) 因为我们定义的i轮数正好是递减的。
这就达到了循环次数的控制。
接下来我们只需要进行数字交换即可。
这个时候我们可以参考如何让两个杯子中的水进行交换,我们当然就需要再找一个空杯子,因此在内部定义一个临时变量即可进行交换。
具体代码如下:
public static void m1(int []a){
for(int i=a.length-1;i>0;i--){
for(int j=0;j<i;j++){
if(a[j]>a[j+1]){
int trans=a[j];
a[j]=a[j+1];
a[j+1]=trans;
}
}
}
int i=1;
for (int x : a) {
System.out.println("第 "+i+"个数是"+x);
i++;
}