排序算法(2)-冒泡排序

原理:

冒泡排序的思想,是让最大的数浮动到数组最后的位置,其次大的数浮动到数组倒数第二个位置……

当然,你也可以从大到小排序,也可以从后向前冒泡。其特征操作是相邻元素的比较和交换。


排序过程

举例说明:要排序数组:{10,3,7,4,9,2};   

第一趟排序:

第一次排序:10和3比较,10大于3,交换位置:  3   10  7  4   9  2

第二次排序:10和7比较,10大于7,交换位置:3   7  10  4   9   2

第三次排序:10和4比较,10大于4,交换位置:  3  7  4  10  9  2

第四次排序:10和9比较,10大于9,交换位置:3  7  4  9  10  2

第五次排序:10和2比较:10大于2,交换位置:  3  7  4  9  2  10

第一趟总共进行了5次比较, 排序结果:      3  7  4  9  2  10

---------------------------------------------------------------------

第二趟排序:

第一次排序:3和7比较,3小于7,不交换位置:3  7  4  9  2  10

第二次排序:7和4比较,7大于4,交换位置:  3  4  7  9  2  10

第三次排序:7和9比较,7小于9,不交换位置:3  4  7  9  2  10

第四次排序:9和2比较,9大于2,交换位置:  3  4  7  2  9  10

第二趟总共进行了4次比较, 排序结果:      3  4  7  2  9  10

---------------------------------------------------------------------

第三趟排序:

第一次排序:3和4比较,3小于4,不交换位置:  3  4  7  2  9  10

第二次排序:4和7比较,4小于7,不交换位置:3  4  7  2  9  10

第三次排序:7和2比较,7大于9,交换位置:  3  4  2  7  9  10

第二趟总共进行了3次比较,排序结果:         3  4  2  7  9   10

---------------------------------------------------------------------

第四趟排序:

第一次排序:3和4比较,3小于4,不交换位置:3  4  2  7  9   10

第二次排序:4和2比较,4大于2,交换位置:  3  2  4  7  9  10

第二趟总共进行了2次比较,排序结果:       3  2  4  7  9  10

---------------------------------------------------------------------

第五趟排序:

第一次排序:3和2比较,3大于2,交换位置:  2  3  4  7  9  10

第二趟总共进行了1次比较,排序结果:  2  3  4  7  9  10

---------------------------------------------------------------------


代码实现


时间复杂度:其外层循环执行 N - 1次。内层循环最多的时候执行N次,最少的时候执行1次,平均执行(N+1)/2次。

所以循环体内的比较交换约执行(N - 1)(N + 1) / 2 = (N^2 - 1)/2(其中N^2是仿照Latex中的记法,表示N的平方)。按照计算复杂度的原则,去掉常数,去掉最高项系数,其复杂度为O(N^2)。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    蚁前阅读 5,243评论 0 52
  • 冒泡排序 1.冒泡排序算法的运作如下:比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样...
    疯狂的喵喵阅读 328评论 1 2
  • 简单来说,时间复杂度指的是语句执行次数,空间复杂度指的是算法所占的存储空间 时间复杂度计算时间复杂度的方法: 用常...
    Teci阅读 1,141评论 0 1
  • 1.插入排序—直接插入排序(Straight Insertion Sort) 基本思想: 将一个记录插入到已排序好...
    依依玖玥阅读 1,293评论 0 2
  • 真的决定要分手了,我知道你一心想要走,任凭我怎么挽留。强忍着眼泪捧着你的脸笑了,而你看着我却哭了。我内心更难过了。...
    觉非子阅读 108评论 0 0