排序算法总结(3)--冒泡排序
来源:互联网 发布:信访网络舆情工作方案 编辑:程序博客网 时间:2024/05/23 16:33
一、简介
冒泡排序也是一种简单直观的排序算法。从最后一个元素开始,每次比较两个相邻元素,如果他们的顺序错误就把他们交换过来。对每一对相邻元素作同样的工作,从后到前。一次循环完毕后,最前的元素是最小的数。即经过交换,最小的数“浮”到了数列的最前端。持续每次对未确定最终位置的元素重复上面的步骤,直到没有任何一对数字需要比较。 对于大小为n的数组,需要循环n-1次。为了提高效率,需要设置一个标签,如果在循环中发生了交换,标签为1,如果没有发生交换,标签为0,说明说有的元素排列完成,算法停止。
二、伪代码
冒泡排序bubbleSort(A)flag=true;for i=0 to A.length-2 && flag==true flag=false; for j=A.length-1 downto i+1 if A[j]<A[j-1] swap(A[j],A[j-1]) flag=true;
三、代码实现
public class Method { public static void main(String[] args) { int[] array={41,31,59,26,41,58,1,3,78,6,15,0}; bubbleSort(array); for(int x:array){ System.out.println(x); } } public static void bubbleSort(int[] array){ boolean flag=true; for(int i=0;i<array.length-1 && flag==true;i++){ flag=false; for(int j=array.length-1;j>i;j--){ if(array[j]<array[j-1]){ int temp=array[j]; array[j]=array[j-1]; array[j-1]=temp; flag=true; } } } }}
四、复杂度分析
时间复杂度:
最好情况:O(n)
最坏情况:O(n^2)
平均情况:O(n^2)
空间复杂度:O(1),原址排序
五、注意事项
1、冒泡是稳定的算法。而其时间效率是不确定的,在最好的情况下仅执行1趟冒泡做n-1次比较,无交换,而在最坏的情况下执行n-1趟冒泡,第i趟做了n-i次比较,并执行n-i次对象交换。
2、冒泡排序在每趟冒泡之后,至少有一个元素确定最终位置。
3、选择排序、插入排序和冒泡排序都是时间复杂度为
阅读全文
0 0
- 排序算法总结(3)--冒泡排序
- 排序算法总结---冒泡排序
- 排序算法总结:冒泡排序
- 【排序算法总结】冒泡排序
- 冒泡排序算法总结
- 冒泡排序算法总结
- iOS算法总结-冒泡排序
- iOS算法总结-冒泡排序
- iOS算法总结-冒泡排序
- 排序算法总结——冒泡排序
- 排序算法总结1-冒泡排序
- 排序算法总结(七)冒泡排序
- 排序算法总结之冒泡排序
- 排序算法总结之冒泡排序
- iOS 排序算法总结—冒泡排序
- 排序算法--冒泡排序
- 排序算法-冒泡排序
- 排序算法--冒泡排序
- mysql(九)MySQL如何执行关联查询
- leetcode-46. Permutations(非重复元素全排列)
- 引用和指针的区别
- 洛谷 P1018 乘积最大
- #include <>与#include“ ”
- 排序算法总结(3)--冒泡排序
- 【图论】数组模拟邻接表存储(链式前向星)
- swjtuoj 2390 Segment Tree
- java - 位运算
- python map()
- openssl安装
- JAVA-1001. 害死人不偿命的(3n+1)猜想
- vs2013 使用string,struct,指针
- windows服务器自动删除日志文件