排序算法之冒泡排序
来源:互联网 发布:unity3d lua教程 编辑:程序博客网 时间:2024/06/07 01:23
冒泡排序
冒泡排序算法是蛮力算法设计思想的一个典型应用,相应的还有选择排序,后后续会谈到。冒泡排序算法的核心思想就是比较表中的相邻元素,如果它们是逆序的话就交换它们的位置,重复多次以后,最终,最大的元素就“沉到”了列表中的最后一个位置。第二遍操作将第二大的元素沉下去,依次执行n-次,从而得到有序的列表。第i遍冒泡排序可以用下面的示例图表示:
竖线后面的表示已经排好序的部分最大元素,前面表示排序的过程。
代码实现
改进的冒泡排序算法的java实现代码如下:
import java.util.*;//改进的冒泡排序算法public class BubbleSort { public int[] bubbleSort(int[] A, int n) { for(int i=0;i<n-1;i++){ //定义一个标志变量 boolean flag = false; for(int j=0;j<n-i-1;j++){ if(A[j]>A[j+1]){ int temp = A[j]; A[j] = A[j+1]; A[j+1] = temp; flag = true; } } //如果标志变量没有发生变化,说明内部已经全部有序,直接跳出循环即可 if(!flag){ break; } } return A; }}
改进冒泡排序算法的思路是冒泡排序在不断进行相邻比较,交换迭代的过程中,如果在第i次迭代中相邻元素没有发生一次交换,说明列表内部已经完成排序,无需进行后面的迭代,从而提升了排序效率。这里可以在代码中设置一个标志变量用于标记第i次迭代是否发生元素交换,根据标志变量的值做出相应的处理即可。
算法时间复杂度分析
冒泡排序算法的基本操作是相邻元素的比较,即A[j]与A[j+1]元素的比较。假设算法的输入为规模大小为n的数组,则最好情况下即输入的数组为一个升序有序数组,那么算法在执行完第一次外层循环时就会结束,基本操作次数为n-1次,故算法的复杂度为O(n);最坏情况下即输入的数组为一个降序数组,那么算法的基本操作次数大约为内外层循环次数之积,故时间复杂度为O(n^2);冒泡排序算法的平均时间复杂度也为O(n^2).
阅读全文
0 0
- 排序算法之冒泡排序
- 排序算法之冒泡排序
- 排序算法之冒泡排序
- 【排序算法】之冒泡排序
- 排序算法之冒泡排序
- 排序算法之冒泡排序
- 排序算法之冒泡排序
- 排序算法之冒泡排序
- 排序算法之冒泡排序
- 排序算法之冒泡排序
- 排序算法之冒泡排序
- 排序算法之冒泡排序
- 排序算法之冒泡排序
- 排序算法之冒泡排序
- 排序算法之冒泡排序
- 排序算法之-冒泡排序
- 排序算法之冒泡排序
- 排序算法之冒泡排序
- 设计模式六大原则——接口隔离原则
- prototype 属性使您有能力向对象添加属性和方法。
- 当时学习的时候碰到的Java 关于 i=i++ 问题 解答
- 一个批量添加的Shell脚本
- Spring定时任务(Quartz)用法
- 排序算法之冒泡排序
- Extjs4的Grid中rownumberer倒序排序
- bfs 穿越雷区 杭电题目
- hadoop 分布式环境搭建
- 多线程 通过GCD实现网络并行
- Activity生命周期与启动模式基础知识备忘录
- Opentext BPS 平台开发入门实战演练——基于XForm界面开发
- Spring定时任务(Quartz第二种)用法
- 苹果发布用户来源功能,从渠道到数据监控或将全面洗牌!