资讯专栏INFORMATION COLUMN

冒泡排序(Bubble Sort)

jzzlee / 1741人阅读

摘要:演示动图演示具体过程代码常规优化归纳排序方法时间复杂度最坏时间复杂度最好空间复杂度稳定性冒泡排序稳定总结代码简介但低效,仅用于入门。参考十大经典排序算法冒泡排序

1.算法描述

比较相邻的元素。如果第一个比第二个大,就交换他们两个。

对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。

针对所有的元素重复以上的步骤,除了最后一个。

持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

2.演示 2.1动图演示

2.2具体过程

3.代码 3.1常规
// Java program for implementation of Bubble Sort 
class BubbleSort 
{ 
    void bubbleSort(int arr[]) 
    { 
        int n = arr.length; 
        for (int i = 0; i < n-1; i++) 
            for (int j = 0; j < n-i-1; j++) 
                if (arr[j] > arr[j+1]) 
                { 
                    // swap arr[j+1] and arr[i] 
                    int temp = arr[j]; 
                    arr[j] = arr[j+1]; 
                    arr[j+1] = temp; 
                } 
    } 

    /* Prints the array */
    void printArray(int arr[]) 
    { 
        int n = arr.length; 
        for (int i=0; i
3.2优化
// Optimized java implementation 
// of Bubble sort 
import java.io.*; 

class GFG 
{ 
    // An optimized version of Bubble Sort 
    static void bubbleSort(int arr[], int n) 
    { 
        int i, j, temp; 
        boolean swapped; 
        for (i = 0; i < n - 1; i++) 
        { 
            swapped = false; 
            for (j = 0; j < n - i - 1; j++) 
            { 
                if (arr[j] > arr[j + 1]) 
                { 
                    // swap arr[j] and arr[j+1] 
                    temp = arr[j]; 
                    arr[j] = arr[j + 1]; 
                    arr[j + 1] = temp; 
                    swapped = true; 
                } 
            } 

            // IF no two elements were 
            // swapped by inner loop, then break 
            if (swapped == false) 
                break; 
        } 
    } 

    // Function to print an array 
    static void printArray(int arr[], int size) 
    { 
        int i; 
        for (i = 0; i < size; i++) 
            System.out.print(arr[i] + " "); 
        System.out.println(); 
    } 

    // Driver program 
    public static void main(String args[]) 
    { 
        int arr[] = { 64, 34, 25, 12, 22, 11, 90 }; 
        int n = arr.length; 
        bubbleSort(arr, n); 
        System.out.println("Sorted array: "); 
        printArray(arr, n); 
    } 
} 
// This code is contributed 
// by Nikita Tiwari. 
4.归纳
排序方法 时间复杂度(最坏) 时间复杂度(最好) 空间复杂度 稳定性
冒泡排序 O(n*n) O(n) O(1) 稳定
5.总结

代码简介但低效,仅用于入门。

参考:

十大经典排序算法

Bubble Sort

[冒泡排序](

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/74829.html

相关文章

  • Python 算法之冒泡排序

    摘要:冒泡排序冒泡排序英语是一种简单的排序算法。冒泡排序算法的运作如下比较相邻的元素。冒泡排序动态图代码实现我们来逐行分析下。这里的减是为了不在遍历之前排序好的元素。记录交换的次数,但代表没有交换,序列已经有序。 冒泡排序 冒泡排序(英语:Bubble Sort)是一种简单的排序算法。它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复地进行直...

    LeexMuller 评论0 收藏0
  • PHP冒泡排序Bubble Sort)算法详解

    摘要:前言冒泡排序大概的意思是依次比较相邻的两个数,然后根据大小做出排序,直至最后两位数。由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作冒泡排序。 前言 冒泡排序大概的意思是依次比较相邻的两个数,然后根据大小做出排序,直至最后两位数。由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作冒泡排序。但其实在实际过程中也可以根据自己需要反过来用,大树往前放...

    sf190404 评论0 收藏0
  • 数据结构与算法(二):带你读懂冒泡排序Bubble Sorting)

    摘要:经过一次冒泡排序,最终在无序表中找到一个最大值,第一次冒泡结束。也是我们后面要说的冒泡排序的优化。冒泡排序只执行第一层循环,而不会执行第二层循环。因此冒泡排序的时间复杂度是。 showImg(https://user-gold-cdn.xitu.io/2019/6/19/16b6f986df6880f9?w=640&h=142&f=gif&s=17175);showImg(https:...

    chuyao 评论0 收藏0
  • C语言:数组(及冒泡排序

    摘要:代码修正后修改后,我们可以排列无限个数字这样,一个冒泡排序就完成了。,数组名表示整个数组。 首先感谢一位博主: 原来45 他写的博客内容十分详细,为我创造博客提供了莫大的帮助,也为我解决了很多困难。 先贴出2篇他的文章 C语言从入门到入土(入门篇)(数组p1)_原来45的博客-CSDN博客 ...

    Tony_Zby 评论0 收藏0

发表评论

0条评论

jzzlee

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<