标签:
之前写的代码
public void bubbleSort(int arr[]) { for(int i = 0, len = arr.length; i < len - 1; i++) { for(int j = 0; j < len - i - 1; j++) { if(arr[j + 1] < arr[j]) swap(arr, j, j + 1); } } }
一直没考虑过最好情况的时间复杂度为什么是O(n),猛地一看,这不科学啊?
直到看了下面的代码,才恍然大悟
public void bubbleSort(int arr[]) { boolean didSwap; for(int i = 0, len = arr.length; i < len - 1; i++) { didSwap = false; for(int j = 0; j < len - i - 1; j++) { if(arr[j + 1] < arr[j]) { swap(arr, j, j + 1); didSwap = true; } } if(didSwap == false) return; } }
参考文章:http://www.cnblogs.com/melon-h/archive/2012/09/20/2694941.html
标签:
原文地址:http://www.cnblogs.com/kanghaimeng/p/4739885.html