冒泡排序

来金德瑞2018.08.25 15:24:56字数 388阅读 178冒泡排序(英语:Bubble Sort)是一种简单的排序算法。它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。冒泡排序算法的运作如下:比较相邻的元素。如果第一个比第二个大(升序),就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。冒泡排序的分析交换过程图示(第一次):

bubblesort.jpg那么我们需要进行n-1次冒泡过程,每次对应的比较次数如下图所示:PassComparisons1n-12n-23n-3.......n-11def bubble_sort(alist): for j in range(len(alist)-1,0,-1): # j表示每次遍历需要比较的次数,是逐渐减小的 for i in range(j): if alist[i] > alist[i+1]: alist[i], alist[i+1] = alist[i+1], alist[i]li = [54,26,93,17,77,31,44,55,20]bubble_sort(li)print(li)时间复杂度最优时间复杂度:O(n) (表示遍历一次发现没有任何可以交换的元素,排序结束。)最坏时间复杂度:O(n2)稳定性:稳定冒泡排序的演示

bubble.gif

(0)

相关推荐

  • 算法——列表排序和常用排序算法

    目录 一.列表排序 二.常见排序算法 1.冒泡排序(Bubble Sort) 2.选择排序(Selection Sort) 3.插入排序(Insertion Sort) 4.快速排序(Quick So ...

  • python笔记2-冒泡排序

    前言 面试的时候经常有面试官喜欢问如何进行冒泡排序?这个问题相信能难倒一批英雄好汉,本篇就详细讲解如何用python进行冒泡排序. 一.基本原理 1.概念: 冒泡排序(Bubble Sort),是一种 ...

  • 冒泡排序、插入排序、选择排序、希尔排序

    排序是一个非常经典的问题,它以一定的顺序对一个数组(或一个列表)中的项进行重新排序(可以进行比较,例如整数,浮点数,字符串等)(增加,非递减,递减, 增加,词典等). 有许多不同的排序算法,每个都有其 ...

  • Java基础(冒泡排序)

    一.冒泡排序简介(从小到大排序) 比较相邻的元素.如果第一个比第二个大,就交换他们两个. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.在这一点,最后的元素应该会是最大的数. 针对所有的 ...

  • Go 数据结构和算法篇(四):冒泡排序

    Go语言中文网 今天 以下文章来源于xueyuanjun ,作者xueyuanjun 今天给大家介绍的是基于选择的排序算法,常见基于选择的排序算法有冒泡排序.插入排序.选择排序.归并排序和快速排序,我 ...

  • 【必知】什么是冒泡排序?

    【必知】什么是冒泡排序?

  • 趣味编程丨C语言冒泡排序之如何对10个数升序?

    例题:C语言实现从小到大对10个数进行排序,要求使用冒泡排序实现. 解题思路:排序的规律有两种:一种是"升序",从小到大:另一种是"降序",从大到小. 源代码演 ...

  • 面试官:手写一个冒泡排序,并对其改进(java实现)

    转载自:https://blog.csdn.net/sdddlll/article/details/100574229 之前写过一篇选择排序,很多人把它和冒泡排序搞混了,这篇文章对冒泡排序进行一个分析 ...

  • Python | 有趣的冒泡排序

    引言喝汽水的时候,汽水中常常有许多小小的气泡,哗啦哗啦飘到上面来.这是因为组成小气泡的二氧化碳比水要轻,所以小气泡可以一点一点向上浮动.而我们的冒泡排序之所以叫做冒泡排序,正是因为这种排序算法的每一个 ...

  • 算法创作 | 冒泡排序问题解决方法

    问题描述问题:当需要将一组乱序的数据排序时应该如何解决?示例:此程序每一次输入一组乱序的数据后,会输出一组排好顺序的从小到大(或从大到小)的数据.输入:[64,34,25,12,22,11,90]输出 ...

  • 堆排序,选择排序,冒泡排序

    堆排序,选择排序,冒泡排序的三种排序 package experiment; import java.util.Arrays; import java.util.Scanner; public cla ...