O(n^2)排序算法1——冒泡排序,改进冒泡排序,java实现

来源:互联网 发布:caffe教程 编辑:程序博客网 时间:2024/06/02 01:22
public class BubbleSort<T extends Comparable<? super T>> {    public void sort(T[] arr) {        for (int i = arr.length - 1; i > 0; i--) {            for (int j = 0; j < i; j++) {                if (arr[j].compareTo(arr[j + 1]) > 0) {                    T temp = arr[j];                    arr[j] = arr[j + 1];                    arr[j + 1] = temp;                }            }        }    }}
//改进后的冒泡排序public class BubbleSortAdvance<T extends Comparable<? super T>> {/** * 用n记录了最后一次交换的位置 * 减少了n到i间的重复比较 */public void sort(T[] arr) {int n = arr.length;boolean swaped = false;for (int i = n - 1; i > 0; i--) {for (int j = 0; j < i; j++) {if (arr[j].compareTo(arr[j + 1]) > 0) {T temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;n = j + 1;//+1是因为外层循环每次要i--swaped = true;}}i = swaped ? n : i;swaped = false;}}}


1 0