在数组中,经常会用数组中数据的排序问题。对于排序问题的算法比较多,这里分享下比较经典的算法--冒泡法!
冒泡法的名字来源:我们在日常生活中,烧开水的时候回发现,气泡越往上,它的体积越大。我们把这种2个数比较一次,然后将大的数字交换到前面,小的在后面的算法叫做冒泡法。
例; 有数组 int a[ ] ={3,65,41,23,77,99} 要求将数组中的数字从大到小排列。
分析; 用数组中相邻数字 “3”根后面的数字“65.41.23.77.99”进行比较。角标0上的“3”与角标1上的“65”比较。3<65是真,那么就把3和65进行位置交换。然后是角标1上的值“3”跟角标2上的值“41”进行比较。这样我们就发现,大的数字在上前移动,小的数值在向后移动。
具体代码如下:
public class maopao {
public static void main(String[] args) {
int a[]={3,65,41,23,77,99};
for (int i= 0; i < a.length-1; i++) { //-1 是因为当i=5是,没有相邻的元素比较。
for (int j = 0; j < a.length-1-i; j++) { //减i是为了让每次比较的元素减少,减1,是为了让数组不越界。
if ( a[j] < a[j+1]) { //如果前一个数比后一个数小,交换位子。
int b=0; //定义一个b 是为了方便进行交换。
b=a[j+1];
a[j+1]=a[j];
a[j]=b;
}
}
}
for (int k = 0; k < a.length; k++) {
System.out.println(a[k]);
}
}
}