public class Maopao {
public static void swap(int a[], int i, int j) {
i = a[j];
a[j] = a[j + 1];
a[j + 1] = i;
}
public static void maopaoSort(int[] a){
for (int i=a.length-1;i>0;i--) {
for (int j=0;j<i;j++) {
if (a[j] > a[j + 1]) {
swap(a,j+1,j);
}
}
}
for (int i=0;i<a.length;i++) {
System.out.print(a[i] + " ");
}
}
public static void maopao2(int[] a) {
for (int i = a.length - 1; i > 0; i--) {
for (int j = 0; j < i - 1; j++) {
if (a[j] > a[j + 1]) {
swap(a, j, j + 1);
}
}
}
for (int x : a) {
System.out.print(x);
}
}
public static void main(String[] args) {
int[] a = {1,3,5,7,9,0,2,4,6,8};
maopaoSort(a);
System.out.println();
maopao2(a);
}
}
冒泡排序:从头开始,相邻两两比较,若前者大于后者,则交换位置,指针后移,
直至指针倒数第二个点(因为最后一个点是倒数第二个点的比较对象,比较过大小了)
一共作了arr.length-1次比较
遍历一次之后会在数组末尾获得当前数组的最大值.
进行第二次遍历,上一次遍历得出的最大值,就不用进行比较了,故此次比较次数比上一次遍历少一次
便利之后得到第二大值,放在数组倒数第二的位置上.依此类推
一共遍历a.length-1次(最后依次遍历时只剩两个元素,排好一个另一个也就排好了),数组排序完毕.