关闭

排序算法总结(3)--冒泡排序

标签: 排序算法java
48人阅读 评论(0) 收藏 举报
分类:

一、简介

冒泡排序也是一种简单直观的排序算法。从最后一个元素开始,每次比较两个相邻元素,如果他们的顺序错误就把他们交换过来。对每一对相邻元素作同样的工作,从从后到前。一次循环完毕后,最前的元素应该会是最小的数。即经过交换,做小的数“浮”到了数列的最前端。针对所有的元素重复以上的步骤,除了最前面的一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 对于大小为n的数组,需要循环n-1次。为了提高效率,需要设置一个标签,如果在循环中发生了交换,标签为1,如果没有发生交换,标签为0,说明说有的元素排列完成,算法停止。

二、伪代码

冒泡排序
bubbleSort(A)
for i=0 to A.length-2
    flag=true;
    while(flag)
        flag=false;
        for j=A.length 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){
        for(int i=0;i<array.length-1;i++){
            boolean flag=true;
            while(flag){
                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-1次对象交换。
2、冒泡排序在每趟冒泡之后,至少有一个元素确定最终位置。

0
0

猜你在找
C语言及程序设计(讲师:贺利坚)
Python爬虫工程师培养课程全套(讲师:韦玮)
Python全栈开发入门与实战课(讲师:李杰)
2017软考网络规划设计师视频套餐(讲师:任铄)
2017软考软件设计师视频套餐(讲师:任铄)
2017软考-信息系统项目管理师视频套餐(讲师:任铄)
软考(高级)项目经理实战营(讲师:张传波)
微信公众平台开发套餐(讲师:刘运强)
深度学习原理+实战+算法+主流框架套餐(讲师:唐宇迪)
2017系统集成项目管理工程师通关套餐(讲师:徐朋)
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:2108次
    • 积分:154
    • 等级:
    • 排名:千里之外
    • 原创:14篇
    • 转载:6篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档