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

原创 2017年05月18日 21:20:57

一、简介

冒泡排序也是一种简单直观的排序算法。从最后一个元素开始,每次比较两个相邻元素,如果他们的顺序错误就把他们交换过来。对每一对相邻元素作同样的工作,从后到前。一次循环完毕后,最前的元素是最小的数。即经过交换,最小的数“浮”到了数列的最前端。持续每次对未确定最终位置的元素重复上面的步骤,直到没有任何一对数字需要比较。 对于大小为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、选择排序、插入排序和冒泡排序都是时间复杂度为O(n2)的排序算法,而且分别是堆排序、希尔排序和快速排序的基本算法,算法思想中都包含了n-1次循环和比较、交换等,下面是具体的区别。

排序算法 选择排序 插入排序 冒泡排序
每趟循环 比较多次交换一次 比较多次,移动多次 比较多次,交换多次
比较次数是否和序列有关 无关 有关 有关
每次循环后是都能确定一个元素的位置 不能
改进算法 堆排序 希尔排序 快速排序

Python练手之6种经典排序算法

在入手了python之后,确实被它简单的特性和上手容易度震惊过。不过python和c语言什么的又确实存在很大的差别,习惯了c语言,使用python的时候多少还是有些不习惯。   入手python...
  • u012377333
  • u012377333
  • 2014-10-30 20:05:14
  • 1416

面试总结:冒泡排序

冒泡排序是一种非常简单和容易理解的
  • Instpcgame
  • Instpcgame
  • 2014-11-19 11:46:12
  • 340

【排序算法】冒泡排序原理及Java实现

冒泡排序顾名思义就是整个过程像气泡一样往上升,单向冒泡排序的基本思想是(假设由小到大排序):对于给定n个记录,从第一个记录开始依次对相邻的两个记录进行比较,当前面的记录大于后面的记录时,交换位置,进行...
  • jianyuerensheng
  • jianyuerensheng
  • 2016-04-26 21:26:11
  • 9056

十二.C语言8种排序算法及其实现 1.希尔排序 2.二分插入法 3.直接插入法 4.带哨兵的直接排序法 5.冒泡排序 6.选择排序 7.快速排序 8.堆排序

一.希尔(Shell)排序法(又称宿小增量排序,是1959年由D.L.Shell提出来的) /* Shell 排序法 */ #include void sort(int v[],int n) { ...
  • u011676589
  • u011676589
  • 2013-08-16 08:01:53
  • 1835

冒泡排序算法及其优化

冒泡排序 1、介绍: 冒泡排序和选择排序的思想是蛮力法,冒泡,顾名思义,每次选择后面一个元素(最大或者最小)冒上来,从而得到一个有序的序列。比如对于序列:10、8、5、7、3、1的冒泡第一趟演示图示...
  • diaoaa
  • diaoaa
  • 2014-03-29 13:20:51
  • 3516

请编程实现一个冒泡排序算法?

int [] array = new int ; int temp = 0 ; for (int i = 0 ; i { for (int j = i + 1 ; j { if (ar...
  • X_X_OO
  • X_X_OO
  • 2016-09-13 19:36:13
  • 2201

javascript实现-冒泡排序算法

//以下代码是自己用冒泡算法结合dom操作实现的排序操作。 熟悉js功能的朋友可以直接用sort()内置函数实现数组的排序,此方法是自己写的冒泡排序,有助于理解算法的思想. 代码可直接...
  • garvisjack
  • garvisjack
  • 2017-01-31 13:17:58
  • 560

经典排序算法(1)——冒泡排序算法详解

冒泡排序(Bubble Sort)是一种典型的交换排序算法,通过交换数据元素的位置进行排序。 一、算法基本思想 (1)基本思想 冒泡排序的基本思想就是:从无序序列头部开始,进行两两比较,根据大...
  • guoweimelon
  • guoweimelon
  • 2016-03-16 10:52:26
  • 29993

冒泡排序算法-Python描述

冒泡排序的思想:假如数列有n个数,我们从第n个数开始,比较第n个数与第n-1个数的大小,如果第n个小于第n-1个,则交换两者的位置,否则不动;依次进行下去直到数组当中的第一个元素,此时第一个元素就是整...
  • qq_14959801
  • qq_14959801
  • 2016-11-01 17:53:59
  • 2030

详解冒泡排序及Python3代码实现

下面详细介绍冒泡排序的思想以及python3代码实现。 首先是这样一个常识:在水中两个相同深度的气泡,大的气泡上浮的快,最先上浮到水面。 然后假设有一个列表保存着一组数据,如下所示:左端为里表中的...
  • bbc955625132551
  • bbc955625132551
  • 2017-08-14 18:11:45
  • 348
收藏助手
不良信息举报
您举报文章:排序算法总结(3)--冒泡排序
举报原因:
原因补充:

(最多只允许输入30个字)