排序算法总结(1)——冒泡排序
来源:互联网 发布:21天学通java百度云 编辑:程序博客网 时间:2024/06/06 15:41
升序排列:从第一个元素开始,对数组中两两相邻的元素比较,将值较小的元素放在前面,值较大的元素放在后面,一轮比较完毕,一个最大的数沉底成为数组中的最后一个元素,一些较小的数如同气泡一样上浮一个位置。n个数,经过n-1轮比较后完成排序。
代码如下:
public class BubbleSort {private long a[];private int nElemts;public void bubbleSort(){int out,in;for(out=nElemts-1;out>1;out--){for(in=0;in<out;in++){if(a[in]<a[in+1]){swap(in,in+1);}}}}private void swap(int m,int n){int temp=m;a[m]=a[n];a[n]=temp;}}
此算法的目的是将最小的元素放在数组下标为0的位置,并将最大的元素放在数组的最后,也就是下标为n-1的位置。
外层for循环的计数器out从数组的最后开始,即out=n-1,每经过一次循环,out减去1。比out大的元素已经是排序好的元素。
内层for循环的计数器in从0开始,即in=0,每完成一次循环in加1,当in=out时结束内层for循环。在内层for循环中,数组下标为in和in+1的两个数据项进行比较,如果下标为in的数据项大于下标为in+1的数据项,则交换两数据项。
效率问题:
数组中有N个元素,第一塘排序进行N-1次比较,第二次排序进行N-2次比较,一次类推。公式表示为(N-1)+(N-2)+...+1
交换次数可能少于比较次数,在完全逆序的最坏情况下才和比较次数相同
所以比较和交换次数都与N的平方成正比。
无论何时,只要看到一个循环嵌套在另一个循环里就可以怀疑运行时间为O(N2),
0 0
- 排序算法总结(1)——冒泡排序
- 排序算法总结——冒泡排序
- iOS 排序算法总结—冒泡排序
- 排序算法1—插入排序、选择排序、冒泡排序
- 排序算法1——冒泡排序
- 排序算法1——冒泡排序
- 排序算法(1)—冒泡排序
- 排序算法—冒泡排序
- C#算法学习总结—冒泡排序
- 算法总结(1)冒泡排序
- 排序算法总结1-冒泡排序
- 排序算法总结(七)冒泡排序
- 排序算法之(1)——冒泡排序
- 内排序算法总结——冒泡排序
- 排序算法总结---冒泡排序
- 排序算法总结:冒泡排序
- 【排序算法总结】冒泡排序
- 冒泡排序算法总结
- POV-Ray简单上手教程-简单贴图/纹理设置
- WebView.enablePlatformNotifications() 报错 eclipse找不到这个方法
- 加载一张高德地图
- rapidjson 简单封装
- mybatis sqlmap能否、如何直接使用IN + 字符串
- 排序算法总结(1)——冒泡排序
- Java LinkedHashMap源码解析
- Leetcode题解 121. Best Time to Buy and Sell Stock
- Android开发之解决APP启动白屏或者黑屏闪现的问题,androidapp
- Crypto++库在VS 2005中的使用——RSA加解密
- 项目50-二进制文件浏览器
- 统计字符串中不同字符类型的个数
- Graph-Slam(一)
- java集合类源码剖析