排序算法-冒泡排序

package Sort;

import org.junit.Test;

import Sort.utils.Swap;

/*
 * 冒泡排序:
 * 	时间复杂度:O(n^2)
 * 	空间复杂度:O(1)
 */
public class BubbleSort {
	public static <T extends Comparable<T>> void bubbleSort(T[] arr) {
		for (int i = 0; i < arr.length - 1; i++) {
			boolean flag = true;// 设定一个标记,若为true,则表示此次循环没有进行交换,也就是待排序列已经有序,排序已然完成。
			for (int j = 0; j < arr.length - 1 - i; j++) {
				if (arr[j].compareTo(arr[j + 1]) > 0) {
					Swap.swap(arr, j, j + 1);
					flag = false;
				}
			}
			if (flag) {
				break;
			}
		}
	}

	@Test
	public void testBubbleSort() {
		// Integer[] arr = { 34, 8, 64, 51, 32, 21 };
		String[] arr = { "abc", "cccc", "bbb" };
		bubbleSort(arr);
		for (String i : arr) {
			System.out.print(i + " ");
		}
	}
}