本论文的例子论述了Java排序算法的总结泡沫排序。 分享给大家参考。 具体分析如下:
前言“气泡排序”(BubbleSort )是指按顺序比较两个相邻的数量,以小数为前,以最大数为后。
看看Java中气泡排序的算法实现。
气泡排序是计算机的一种排序方法,其时间复杂度为o(n^2),不及累计排序、快速排序的O(nlogn,底数为2 ),但有两个优点。
1 .“编程复杂度”低,代码容易写
2 .具有稳定性。 这里的稳定性是指原始数组中相同元素的相对顺序保持在排序后的数组中,堆栈排序、快速排序都没有稳定性。
但一路、二路合并排序、非均衡二叉树排序的速度均快于冒泡排序,具有稳定性,但速度不及累计排序,
快速排序。 气泡排序经过n-1圈的子排序进行,第I圈的子排序从第1个个数到第n-i个个数,在第I个个数大于后面的数的情况下
(升序,小则降序)交换两个数。
气泡排序算法是稳定的,o(1)的额外空间,比较和交换的时间复杂度都是o ) n^2),是自适应的,对于基本排序算法,时间复杂度是o ) n )。 冒泡算法的许多性质与插入算法相似,但开销有点高。
排序过程
竖直排列R[1.N],将各数据元素视为重气泡,根据轻气泡不能在重气泡下的原则,自下而上扫描排列r,扫描到违反该原则的轻气泡后向上浮动
代码实现:
//泡沫排序
公共类bubble sort {
publicstaticvoidsort (比较[ ]数据) {
//数组长度
int len=data.length;
for(intI=0; i len - 1; I ) {
//临时变量
可比较时间=null;
//交换标志,false意味着未交换
布尔is exchanged=false;
for(intj=len-1; j i; j---- ) {
data[j]小于data[j - 1]时更换
if(data[j].comPareto(data[j-1] )0) 0
temp=data[j];
data[j]=data[j - 1];
data[j - 1]=temp;
//因为有交换,所以把交换标志设为真
is交换=true;
}//end if
}//end for
//这次排序不发生交换,提前中止算法,提高效率
if (! isExchanged ) {
返回;
}//end if
}//end for
}//end sort
publicstaticvoidmain (字符串[ ] args ) {
//JDK 1.5版及更高版本可以自动装箱基本数据类型
//int、double等基本类型的包类安装了Comparable接口
comparable [ ] c={ 4,9,23,1,45,27,5,2 };
sort(c;
可比较数据: c (for ) {
system.out.println (数据;
}
}
}
采用气泡排序法对n个数据进行排序,需要进行总共n-1次的比较。 如果是本来就有顺序的数据,也需要n-1次的比较。 泡沫排序法算法简单,效率也很低。
本文希望对大家的java编程有所帮助。