`

[排序算法1] - 冒泡排序

 
阅读更多

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

 

算法原理

 

冒泡排序算法的运作如下:(从后往前)

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

2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。

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

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

 

时间复杂度

 

算法稳定性

 

冒泡排序就是把小的元素往前调或者把大的元素往后调。比较是相邻的两个元素比较,交换也发生在这两个元素之间。所以,如果两个元素相等,我想你是不会再无聊地把他们俩交换一下的;如果两个相等的元素没有相邻,那么即使通过前面的两两交换把两个相邻起来,这时候也不会交换,所以相同元素的前后顺序并没有改变,所以冒泡排序是一种稳定排序算法。

 

算法实现:

 

设数组长度为N。

1.比较相邻的前后二个数据,如果前面数据大于后面的数据,就将二个数据交换。

2.这样对数组的第0个数据到N-1个数据进行一次遍历后,最大的一个数据就“沉”到数组第N-1个位置。

3.N=N-1,如果N不为0就重复前面二步,否则排序完成。

 

public class BubbleSort {

    public static void main(String[] args) {
        int a[] = new int[]{1, 7, 9, 3, 5, 8, 6, 10, 6};
        System.out.print("Before sort: ");
        for (int i : a) {
            System.out.print(i + " ");
        }
        sort(a);
        System.out.print("\nAfter sort: ");
        for (int i : a) {
            System.out.print(i + " ");
        }
    }

    private static void sort(int arr[]) {
        for (int i=0; i< arr.length; i++) {
            for (int j =0; j < arr.length - i -1; j++) {
                if (arr[j] > arr[j+1]) {
                    int temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                }
            }
            //输出每一步的结果
            System.out.println();
            for (int t : arr) {
                System.out.print(t + " ");
            }
        }
    }

}

 

 结果:

 

Before sort: 1 7 9 3 5 8 6 10 6 
1 7 3 5 8 6 9 6 10 
1 3 5 7 6 8 6 9 10 
1 3 5 6 7 6 8 9 10 
1 3 5 6 6 7 8 9 10 
1 3 5 6 6 7 8 9 10 
1 3 5 6 6 7 8 9 10 
1 3 5 6 6 7 8 9 10 
1 3 5 6 6 7 8 9 10 
1 3 5 6 6 7 8 9 10 
After sort: 1 3 5 6 6 7 8 9 10 

 

 冒泡排序动画演示:http://www.tyut.edu.cn/kecheng1/site01/suanfayanshi/MaoPao.asp

 

  • 大小: 114.3 KB
分享到:
评论

相关推荐

    C语言排序算法---冒泡排序法

    冒泡排序是一种简单直观的排序算法,它重复地遍历待排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的...

    排序算法 -- 冒泡排序

    冒泡排序是一种基础且经典的排序算法,它的基本思想是通过不断地交换相邻的逆序元素,使得每一轮排序后,最大的元素“浮”到数组的末尾。这个过程就像水底下的气泡逐渐升至水面一样,因此得名“冒泡排序”。 在Java...

    VC++多线程实现三种排序算法比较----冒泡排序、快速排序、归并排序

    本篇文章主要探讨了如何在VC++环境中利用多线程技术来实现三种经典的排序算法:冒泡排序、快速排序和归并排序,并对它们的性能进行了比较。 首先,冒泡排序是一种简单的排序算法,它重复地遍历待排序的数列,一次...

    Python算法之---冒泡,选择,插入排序算法.py

    Python算法之---冒泡,选择,插入排序算法.py

    算法设计与分析-1排序算法性能分析-冒泡/选择/插入/合并/快速排序-pre ppt

    本篇文章将详细讨论几种常见的排序算法:选择排序、冒泡排序、插入排序、合并排序以及快速排序,分析它们的算法原理、时间效率,并通过经验分析验证理论分析的准确性。 **1. 选择排序(Selection Sort)** 选择排序...

    TIA博途-冒泡排序SCL算法-全局FC库文件-V15版本.zip

    冒泡排序是一种简单的排序算法,它重复地遍历待排序的列表,比较每对相邻元素,如果它们的顺序错误就把它们交换过来。遍历列表的工作是重复进行直到没有再需要交换,也就是说该列表已经排序完成。这个算法的名字由来...

    c语言排序方式2-冒泡排序算法

    一种简单的的排序方式---冒泡排序,本资源为其源代码

    c++排序算法-冒泡排序

    冒泡排序是一种基础且经典的计算机科学排序算法,尤其在C++编程中常见。它通过不断地比较相邻元素并根据需要进行交换,逐步将较大的元素“冒泡”到序列的末尾,从而实现升序排列。这一过程可以理解为一个逐层推进的...

    详解Java常用排序算法-冒泡排序

    Java排序算法之冒泡排序详解 冒泡排序(Bubble Sort)是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果它们的顺序错误就交换位置。这个过程持续对数列的末尾进行,直到整个数列都排序完成...

    排序算法汇总--各类排序算法

    排序算法:排序算法汇总--各类排序算法 冒泡,选择,插入,快排,归并,堆排

    计算机科学中的经典排序算法-冒泡排序详解

    内容概要:文章详细介绍了冒泡排序的基本原理、...阅读建议:重点关注冒泡排序的基本原理和实现步骤,结合代码实例进行练习,同时思考其性能特点和改进方法,有助于加深理解并为进一步学习更复杂的排序算法打下基础。

    排序算法实现-支持插值排序+选择排序+冒泡排序-sort.zip

    冒泡排序的时间复杂度同样为O(n²),并且在最好情况下(即数据已经有序)只需进行n-1次比较即可完成排序。 这些排序算法各有优缺点,适用于不同的场景。在实际应用中,通常会选择时间复杂度更低的排序算法,如快速...

    python的排序算法-冒泡排序

    冒泡排序是一种简单的排序算法,通过重复遍历列表,比较每对相邻元素,并在需要时交换它们的位置。这个过程会重复进行,直到没有更多的交换需要进行。 代码的执行流程如下: 1.l0 是一个包含整数的列表 [10, 50, ...

    最快的排序算法 计算机最快的算法-史上14个最快速算法:孩子的计算能力爆表!大脑堪比计算机!...,排序算法数据结构

    1.冒泡排序算法 冒泡排序算法是一种简单的排序算法,它的工作原理是通过不断地比较相邻元素,并交换它们以达到排序的目的。冒泡排序算法的时间复杂度为O(n^2),因此它适合小规模的数据排序。 2.选择排序算法 选择...

    经典算法的C#源码实现

    经典排序算法 - 冒泡排序Bubble sort 经典排序算法 - 选择排序Selection sort 经典排序算法 - 鸡尾酒排序Cocktail sort 经典排序算法 - 希尔排序Shell sort 经典排序算法 - 堆排序Heap sort序 经典排序算法 - ...

    计算机科学中简单排序算法-冒泡排序的理解与应用

    内容概要:本文详细介绍了一种经典的简单排序算法——冒泡排序。首先解释了冒泡排序的基本概念及其命名来源,然后逐步介绍了具体的算法流程,包括比较、交换、缩小范围三个主要操作阶段。同时展示了实际代码例子及其...

    基于python的排序算法-冒泡排序Bubble Sort

    冒泡排序(Bubble Sort)是一种简单的排序算法,其工作原理是通过重复地遍历待排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列...

    各类排序算法整理--C语言描述--本人编写

    各类排序算法整理--C语言描述--本人编写 排序算法种类有: 冒泡 快速排序 堆排序 希尔排序 插入排序 选择排序 二路归并排序

    matlab排序算法实现-合并排序、简单选择排序、快速排序、冒泡排序、直接插入排序

    将杂乱无章的数据元素,通过一定的方法按关键字顺序排列的过程叫做排序。...本资源通过matlab实现合并排序、简单选择排序、快速排序、冒泡排序、直接插入排序5种常用的排序算法,并部分绘制代表算法原理的动图。

    选择排序-插入排序-快速排序-冒泡排序

    本主题将详细探讨四种常见的排序算法:选择排序、插入排序、快速排序以及冒泡排序,它们都是用C语言实现的。以下是这些排序算法的详细解析: 1. **选择排序(Selection Sort)** - 选择排序是一种简单直观的排序...

Global site tag (gtag.js) - Google Analytics