先上代码实现
package 排序;
public class 冒泡排序 {
//冒泡排序的基本思想:每次比较两个相邻的元素,如果顺序错误就将它们交换
public static void main(String[] args) {
// TODO 自动生成的方法存根
int a[]= {3,2,6,5,7,9,11,20};
maopao(a);
}
//创建一个静态冒泡排序的方法
public static void maopao(int a[]) {//这里需要传进来一个形参数组对这个数组进行排序
int swap;
for(int i=0;i<a.length;i++) {
for(int j=0;j<a.length-i-1;j++) {
if(a[j]>a[j+1]) {
swap=a[j];
a[j]=a[j+1];
a[j+1]=swap;
}
}
}
for(int i=0;i<a.length;i++) {
System.out.println(a[i]);
}
}
}
假如对一个无序的数组 2 6 3 7进行排序
排序的过程 6 3 7 2 (1)
6 7 3 2 (2)
7 6 3 2 (3)
外层的for循环指的是会比较几趟,数组长度为4,很明显比较三趟(当数组为长度为n时比较n-1,因为数组长度是从0开始,所以就是a.length)
内层for循环指的是一趟内元素的交换次数,每比较一次一个元素的位置就已经确定,第一趟确定一个就-1,第二次-2,第三次-3.......也就是n-1-i
if判断时简单的交换,从大到小或者从小到大修改里面的大于号小于号就行了。