一般的冒泡排序会有重复的比较,所以需要对冒泡排序进行优化,优化后的冒泡排序
package shujujiegou;
import java.util.Arrays;
/**
* 冒泡排序的优化算法
* @author TomCat
*
*/
public class BubbleSort {
public static void sort(int[] array) {
int temp=0;
int lastExchangeIndex=0;//记录最后一次的交换位置
int sortBorder=array.length-1;//无序数组的边界,每次比较只需到这里为止
for(int i=0;i<array.length;i++) {
boolean isSorted=true;//有序标记,每一轮的初始是true
for(int j=0;j<sortBorder;j++) {
if(array[j]>array[j+1]) {
temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
isSorted=false;//有元素交换的时候所以是无序的,将标记置为false;
lastExchangeIndex=j;//把无序数组的边界更新为最后一次元素交换的位置
}
}
sortBorder=lastExchangeIndex;
if(isSorted) {
break;
}
}
}
public static void main(String[] args) {
int[] array=new int[] {1,2,4,3,5,5,7,9,6};
sort(array);
System.out.println(Arrays.toString(array));
}
}