java版,很久没搞过数据结构了,这次复习一下。
冒泡就是左右两个数比较,根据从小到大还是从大到小进行交换,然后再递进对比相邻两个数。
有两层循环。
public void MaoPao(int[] data) {
// TODO Auto-generated method stub
int len= data.length;
int temp=0;
if (len<1) return;
for (int j=0;j<len;j++)
for (int i=0;i<len-1;i++)
{
if (data[i+1]<data[i]) {
temp=data[i+1];
data[i+1]=data[i];
data[i]=temp;}
}
}
这个写法最普遍,在效率上其实不是最优,而这种基础写法的T为最坏情况,也就是O(),实际上在内圈循环时的遍历次数是可以越来越低的。
更快的方法可以是:
参考:
基于Java实现的冒泡排序算法 - Captain&D - 博客园 (cnblogs.com)
还有其他的优化方法,网络上都有。