冒泡排序java

来源:互联网 发布:淘宝千牛自动回复短语 编辑:程序博客网 时间:2024/06/01 21:03
  • 时间复杂度:O(n^2)
  • 若原数组本身有序,只需n-1次比较就可完成。若是倒序,比较次数为(n-1)+(n-2)+(n-3)+…1 = n(n-1)/2,交换次数和比较次数等值。
public class BubbleSort {    public static <AnyType extends Comparable<? super AnyType>> void bubbleSort(AnyType[] a, int left, int right) {        for (int i=0; i<a.length-1; i++) {            boolean flag = true; //设定一个标记,若为true,则表示此次循环没有进行交换,也就是待排序列已经有序,排序已然完成            for (int j=0; j<a.length-1-i; j++) {                if (a[j].compareTo(a[j+1]) > 0) {                    swapReferences(a, j, j+1);                    print(a);                    flag = false;                }            }            if (flag) {                break;            }        }    }

交换方法:

public static <AnyType extends Comparable<? super AnyType>> void swapReferences(                                                    AnyType [] a, int left, int right) {        AnyType tmp = a[left];        a[left] = a[right];        a[right] = tmp;    }
原创粉丝点击