【408数据结构与算法】—冒泡排序(十八)

简介: 交换排序思想:两两比较,如果发生逆序则交换,直到所有的记录都排好为止

【408数据结构与算法】—冒泡排序(十八)

一、交换排序

交换排序思想:两两比较,如果发生逆序则交换,直到所有的记录都排好为止

2345_image_file_copy_314.jpg

常见的交换排序的方法:

  • 冒泡排序O (n^2)
  • 快速排序O(nlog2n)

二、冒泡排序

基本思想:每趟不断将记录两两比较,并按前小后大规则交换

2345_image_file_copy_315.jpg

2345_image_file_copy_316.jpg

2345_image_file_copy_317.jpg

2345_image_file_copy_318.jpg

2345_image_file_copy_319.jpg

冒泡排序的优点:每趟结束时,不仅能挤出一个最大值到最后面位置,还能同时部分理顺其他元素

如何提高效率?

一旦某一趟比较时不出现记录交换,说明已经排好序了,就可以结束本算法。

冒泡排序的算法

2345_image_file_copy_320.jpg

C语言实现

#include <stdio.h>
#include <stdlib.h>
int main()
{
int i ,j ,t;
int a[10];
printf("请输入要排序的数据:");
for( i = 0 ; i < 10 ; i ++ )
   {
    scanf(" %d " , & a[i]);
   }
    for( i = 0 ; i < 9 ; i++  )
        for( j = 0 ; j < 9 - i ;  j++ )
    {
      if( a[j] > a[j+1] )
      {
          t = a[j];
          a[j] = a[j+1];
          a[j+1] = t;
      }
    }
    printf("排序过后的结果为:");
    for( i = 0 ; i < 10 ; i++ )
    {
        printf(" %d " ,a[i]);
    }
    return 0;
}

三、冒泡算法的改进

2345_image_file_copy_321.jpg

改进的冒泡排序算法

2345_image_file_copy_322.jpg

四、时间复杂度分析

2345_image_file_copy_323.jpg

2345_image_file_copy_324.jpg

五、冒泡排序的算法评价

2345_image_file_copy_325.jpg

📢📢总结

2345_image_file_copy_326.jpg



相关文章
|
17天前
|
搜索推荐 Python
利用Python内置函数实现的冒泡排序算法
在上述代码中,`bubble_sort` 函数接受一个列表 `arr` 作为输入。通过两层循环,外层循环控制排序的轮数,内层循环用于比较相邻的元素并进行交换。如果前一个元素大于后一个元素,就将它们交换位置。
119 67
|
2月前
|
搜索推荐
冒泡排序算法
【10月更文挑战第19天】冒泡排序是一种基础的排序算法,虽然在实际应用中可能不是最优的选择,但对于理解排序算法的基本原理和过程具有重要意义。
|
2月前
|
算法 搜索推荐
数据结构与算法学习十一:冒泡排序、选择排序、插入排序
本文介绍了冒泡排序、选择排序和插入排序三种基础排序算法的原理、实现代码和测试结果。
23 0
数据结构与算法学习十一:冒泡排序、选择排序、插入排序
|
2月前
|
搜索推荐 算法 数据可视化
深入解析冒泡排序算法
深入解析冒泡排序算法
47 4
|
2月前
|
搜索推荐 C语言
排序算法--冒泡排序
排序算法--冒泡排序
20 0
|
2月前
|
存储 搜索推荐 算法
【排序算法(二)】——冒泡排序、快速排序和归并排序—>深层解析
【排序算法(二)】——冒泡排序、快速排序和归并排序—>深层解析
|
2月前
|
算法 Python
Python算法编程:冒泡排序、选择排序、快速排序
Python算法编程:冒泡排序、选择排序、快速排序
30 0
|
4月前
|
存储 算法 搜索推荐
【初阶数据结构篇】冒泡排序和快速排序(中篇)
与直接插入排序法相比,比较次数一致,但冒泡排序的交换需要执行三次,而直接插入排序因为使用了tmp临时变量存储要插入的数据,只用执行一次,所以直接插入排序法效率明显更高。
35 1
|
4月前
|
搜索推荐 Java
经典排序算法---冒泡排序
这篇文章详细介绍了冒泡排序算法的基本思想、比较轮数和次数,并提供了Java语言实现冒泡排序的代码示例,展示了如何通过相邻元素的比较和交换来达到排序的目的。
经典排序算法---冒泡排序
|
5月前
|
搜索推荐
【数据结构常见七大排序(三)上】—交换排序篇【冒泡排序】And【快速排序】
【数据结构常见七大排序(三)上】—交换排序篇【冒泡排序】And【快速排序】
【数据结构常见七大排序(三)上】—交换排序篇【冒泡排序】And【快速排序】