冒泡排序
顾名思义就是像汽水冒泡一样,以从小到大排序为例,第一轮比较后,所有数中最大的那个数就会浮到最右边;第二轮比较后,所有数中第二大的那个数就会浮到倒数第二个位置……就这样一轮一轮地比较,最后实现从小到大排序。
代码如下
//冒泡排序最坏的排序次数O(n^2)
public class BubbleTest {
public static void main(String[] args) {
Integer arr[]={1,3,5,3,2,5,3};
sort(arr);
System.out.println(Arrays.toString(arr));
}
public static void sort(Comparable[] a){
for (int i = 0; i <a.length-1 ; i++) {//第一次遍历全部
for (int j = 0; j <a.length-i-1 ; j++) {//每次比较完一轮就少比较一个数所以要再减去i
if(size(a[j],a[j+1])){//调用size方法比较两个数的大小
swap(a,j,j+1);//调用swap方法交换两个数
}
}
}
}
//比较两个数的大小(v是否大于w)
public static boolean size(Comparable v,Comparable w){
return v.compareTo(w)>0;
}
//交换两个元素的值
public static void swap(Comparable[] a,int i,int j){
Comparable temp;
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
=a[j];
a[j]=temp;
}
}