算法思想:通过相邻元素之间两两比较和交换,使值小的元素前移,值大的元素后移,每一趟都会有最大的元素移到最后。
(1)首先循环进行n-1趟排序;
(2)在第i趟排序时,进行n-i次两两比较
算法描述:从第一个元素开始,将每一个元素与后一位元素进行比较,如果后一个大,则交换彼此位置,否则不做操作,这张扫描一遍,可以将最大的放到数组的最后边。重复上述操作,直到没有数据要被交换位置。
算法效率:冒泡排序要做N*(N-1)/2次比较 ,N*N/4次交换。交换和比较操作都和N*N成正比。由于常数不算在大O表示法中,可以忽略2和4,并且认为冒泡排序运行需要o(N*N)时间级别。
算法复杂度:o(n^2)
//冒泡排序
public static int[] maopao(int _d[]){
int len = _d.length;
for(int i = 0;i < len; i++){
int j = 0;
while(j < len-i-1){
if(_d[j] > _d[j+1]){
int tmp;
tmp = _d[j];
_d[j] = _d[j+1];
_d[j+1] = tmp;
}
j++;
}
}
return _d;
}