美文网首页
算法- 冒泡排序(Bubble Sort)

算法- 冒泡排序(Bubble Sort)

作者: 求长生 | 来源:发表于2021-11-03 19:31 被阅读0次

冒泡排序是一种计算机科学领域的较简单的排序算法。

从后向前,比较相邻的元素,如果第一个比第二个大,就交换他们两个。比较每一对相邻元素,到队尾最后一个元素应该会是最大的数。依次类推,比出第二大的数,直至所有元素都成倒叙排列(9,8,7,6,5,4,3,2,1,0)

这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,故名。

时间复杂度

若文件本身的排列和想要的排列一致,一趟扫描即可完成排序。所需的关键字比较次数C和记录移动次数M均达到最小值。

原排序(9,8,7,6,5,4,3,2,1,0) ➡ 需要排序(9,8,7,6,5,4,3,2,1,0)

[图片上传失败...(image-b8e712-1571212381789)]

    [图片上传失败...(image-5bd5c6-1571212381789)]

     所以冒泡排序最好的时间复杂度O(n)。

若文件本身的排列和想要的排列相反,需要进行n-1趟排序,每趟排序要进行n-i次关键字的比较。

比如 原排序(1,2,3,4,5) ➡ 需要排序(5,4,3,2,1)

n = 5, 1 <= i <5 ; 排列次数 1+2+3+...+(n-1) = n*(n-1)/2 ;

每次比较都必须移动记录三次来达到交换记录位置。在这种情况下,比较和移动次数均达到最大值:

[图片上传失败...(image-36e71a-1571212381789)]

[图片上传失败...(image-fc1c25-1571212381789)]

冒泡排序的最坏时间复杂度为 [图片上传失败...(image-10a015-1571212381789)]

冒泡排序总的平均时间复杂度为 [图片上传失败...(image-1272a9-1571212381789)]

算法描述

C语言

void bubble_sort(int a[] , int n)

{

 int   i ,  j , temp;

 for (j = 0 ; j < n-1 ; j++ ){

     for (i = 0 ; i < n-1-j ; i++){

           if (a[i] > a[i+1]){

                 temp = a[I];

                 a[i] = a[i+1];

                 a[i+1] = temp; 

           }

     }    

 }

}

OC语言

NSMutableArray * arr = [NSMutableArray arrayWithObjects:@"5",@"4",@"3",@"2",@"1", nil];

for (int j = 0; j < arr.count - 1; j++) {

for (int i = 0; i < arr.count - 1 - j; i++){

    if ([arr[i] integerValue] > [arr[i+1] integerValue]){

        NSString * temp = arr[i];

        arr[i] = arr[i+1];

        arr[i+1] = temp;

    }

}

}

NSLog(@"%@",arr);


时间复杂度

算法的时间复杂度是一个函数,它定量描述了该算法的运行时间。这是一个关于代表算法输入值的字符串的长度的函数。时间复杂度常用于大O符号表示,不包括这个函数的低阶项和首项系数。O(n)即时间复杂度为n。

相关文章

  • 排序经典算法

    冒泡算法(bubble sort) 选择排序(selection sort) 插入排序(insertion sor...

  • 排序算法记录

    排序算法 冒泡排序(bubble sort) 优化后时间复杂度是O(n) 选择排序(selection sort)...

  • 排序系列之四: 冒泡排序法

    Hello,大家好。今天继续给大家讲解排序系列之☞《冒泡排序算法》 冒泡排序(Bubble Sort)...

  • ★ 数组排序

    sort 方法实现 冒泡排序 时间复杂度O(n2) 冒泡排序(Bubble Sort)是最易懂的排序算法,但是效率...

  • 「JAVA」Java基础之冒泡排序、选择排序分析,简单、直观、明

    ​冒泡排序(Bubble Sort) 冒泡排序(Bubble Sort):排序思路:对要排序的数组或者列表从头到尾...

  • 深入浅出 Swift 算法系列一:冒泡排序

    什么是冒泡排序(Bubble Sort) 首先,我们先瞄一眼冒泡排序算法的定义: 冒泡排序 是一种简单的排序算法。...

  • 排序算法--冒泡排序

    一 、算法介绍 (1)算法概述 排序算法有很多,其中最简单直接的就是冒泡啦。冒泡排序(Bubble Sort)是一...

  • 冒泡排序算法

    冒泡排序(Bubble Sort)算法是所有排序算法中最简单、最基本的一种。冒泡排序算法的思路就是交换排序,通过相...

  • Python算法--排序-冒泡排序

    一、冒泡排序 我们在学校都学习过排序算法,这些排序算法中就有一个我们常提到的冒泡排序(Bubble Sort)。 ...

  • 排序

    排序算法比较 一、冒泡排序(Bubble Sort) 基本思想 冒泡排序是一种简单的排序算法。它重复地走访要排序的...

网友评论

      本文标题:算法- 冒泡排序(Bubble Sort)

      本文链接:https://www.haomeiwen.com/subject/dxdumctx.html