冒泡排序(Bubble Sorting)的基本思想是:通过对待排序序列从前向后(从下标较小的元素开始) ,依次比较
相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就象水底下的气泡一样逐渐向上冒。
/** * 冒泡算法 * @author Administrator * */ public class BubbleSort { public static void main(String[] args) {
//时间复杂度O(n^2) n的【平方】 int arr[] = {-3,-1,-5,7,3,4}; for (int i = 0; i < arr.length-1; i++) { int temp = 0; for (int j = 0; j < arr.length-1-i; j++) { if (arr[j]<arr[j+1]) { temp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp; } } } System.out.println(Arrays.toString(arr)); } }
//优化冒泡
public class BubbleSort { public static void main(String[] args) { int arr[] = {-3,-1,-5,7,3,4}; boolean flag = false;//标记临时变量 for (int i = 0; i < arr.length-1; i++) { int temp = 0; for (int j = 0; j < arr.length-1-i; j++) { if (arr[j]<arr[j+1]) { flag = true; temp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp; } } if (!flag) {//一次交换都没有发生过 break; }else {//重置flag,进行下次判断 flag = false; } } System.out.println(Arrays.toString(arr)); } }