【亚洲必赢官网】冒泡排序的兑现,冒泡排序达成

冒泡排序的运维规律(好精通):

冒泡排序(Bubble Sort),是一种计算机科学领域的较不难的排序算法。

它再一次地走访过要排序的数列,三次相比较七个因素,即使他们的顺序错误就把她们调换过来。走访数列的行事是再度地进行直到未有再须要沟通,也正是说该数列已经排序完结。

冒泡排序的实现,冒泡排序完结

1、冒泡排序简介

冒泡排序,重复地走访过要排序的数列,一次相比多少个因素,即使她们的逐条错误就把她们沟通过来。走访数列的行事是重复地开始展览直到未有再必要沟通,也正是说该数列已经排序完结。

  1. 正如相邻的要素。假使第二个比第四个大,就交流他们八个。
  2. 亚洲必赢官网 ,对每1对相近成分作同样的工作,从上马首先对到终极的尾声一对。那步做完后,最终的成分会是最大的数。
  3. 本着富有的成分重复以上的步骤,除了最终1个。
  4. 不止每一遍对越来越少的因素重复上边的手续,直到未有此外一对数字供给比较。

亚洲必赢官网 1

一、冒泡排序简介

冒泡排序,重复地拜会过要排序的数列,一遍相比较八个成分,倘若她们的逐一错误就把他们调换过来。走访数列的做事是重新鸿基土地资金财产开始展览直到未有再须要交流,也等于说该数列已经排序完结。

二、算法的运营

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

  1. 相比相邻的要素。如若第3个比第一个大,就交换他们多个。

  2. 对每1对相近元素作同样的办事,从开首率先对到结尾的最终一对。在那或多或少,最终的元素应该会是最大的数。

  3. 针对富有的成分重复以上的步调,除了最终一个。

  4. 不止每趟对越来越少的因素重复上边的步骤,直到未有其余一对数字须求相比较。亚洲必赢官网 2

备注:上述讲解来自 维基百科 冒泡排序

冒泡排序进度

贰、算法的周转

【亚洲必赢官网】冒泡排序的兑现,冒泡排序达成。冒泡排序算法的运维如下:(从后往前)

  1. 相比较相邻的因素。假如第3个比第三个大,就沟通他们七个。
  2. 对每1对周围元素作同样的干活,从初始率先对到最终的终极壹对。在那一点,最终的要素应该会是最大的数。
  3. 针对具有的要素重复以上的步子,除了最终1个。
  4. 绵绵每一遍对越来越少的成分重复上面包车型地铁步子,直到未有别的1对数字须求比较。亚洲必赢官网 3

三、时间复杂度

     
若文件的发轫状态是正序的,①趟扫描即可到位排序。所需的严重性字相比次数和著录移动次数平均高度达最小值:比较次数:
n-一 ,移动次数为0 。所以,冒泡排序最佳的年华复杂度为O(n) 。
  若初步文件是反序的,须要开始展览趟n-一 排序。每次排序要开始展览 n-i
((壹≤i≤n-一))次重大字的相比,且每回相比都不能够不移动记录一次来实现沟通记录地方。在那种意况下,相比较和平运动动次数平均高度达最大值:相比较次数n*(n-1)/二,移动次数3n*(n-1)/2 。
冒泡排序的最坏时间复杂度为O(n*n) 。
综上,因而冒泡排序总的平均时间复杂度为O(n*n) 。

代码如下(从大到小排序):

算法原理(从后往前):

  1. 正如相邻的元素。要是第壹个比第二个大,就沟通他们多少个。

二.
对每1对周围成分作同样的做事,从开首率先对到终极的末尾壹对。在那一点,最终的因素应该会是最大的数。

  1. 本着全数的因素重复以上的步骤,除了最终八个。

四.
持续每一遍对越来越少的因素重复上面的步骤,直到未有其它1对数字须求比较。

三、时间复杂度

     
若文件的伊始状态是正序的,①趟扫描即可实现排序。所需的首要性字相比次数和笔录移动次数均达到规定的标准最小值:比较次数:
n-壹 ,移动次数为0 。所以,冒泡排序最佳的时刻复杂度为O(n) 。
  若开首文件是反序的,须求展开趟n-一 排序。每回排序要举办 n-i
((壹≤i≤n-壹))次主要字的相比,且每一回比较都必须移动记录三遍来完成交流记录地点。在那种情景下,相比和移动次数均达到最大值:比较次数n*(n-一)/2,移动次数③n*(n-1)/2 。
冒泡排序的最坏时间复杂度为O(n*n) 。
综上,由此冒泡排序总的平均时间复杂度为O(n*n) 。

4、算法稳定性

冒泡排序正是把小的因素往前调恐怕把大的要素以后调。相比是附近的多少个成分相比较,交流也发生在那五个因素之间。所以,倘若四个因素相等,不用沟通一下的;假设七个十分的成分未有相邻,那么尽管通过后边的两两调换把八个相邻起来,那时候也不会换换,所以同样元素的光景相继并从未更改,所以冒泡排序是一种祥和排序算法。

 

int[] sort = new int[13] { 1, 4, 89, 34, 56, 40, 59, 60, 39, 1, 40, 90, 48 };  // 输入一个数组
 for (int i = 0; i < sort.Length; i++)  // 循环每个元素。
            {
                for (int j = i+1; j < sort.Length; j++) // 每个元素都与它之后的元素进行一对一比较。
                {
                    if (sort[i] < sort[j])  // 当有值比sort[i]大时,就交换数值。
                    { 
                    int temp = sort[i];
                    sort[i] = sort[j];
                    sort[j] = temp;    // sort[i] 获取的是始终为最大值。
                    }
                }
            }
 for (int i = 0; i < sort.Length; i++)  // 输出
            {
                Console.Write(sort[i] + " ");
            }

算法实现:

亚洲必赢官网 4

java实现

亚洲必赢官网 5

python实现


冒泡排序便是把小的因素往前调恐怕把大的因素以后调。比较是相邻的四个要素相比,交换也发出在那三个成分之间。所以,如若多个因素相等,作者想你是不会再俗气地把她们俩置换一下的;固然四个卓殊的成分未有相邻,那么固然通过前面包车型地铁两两调换把多少个相邻起来,这时候也不会换换,所以同样成分的上下相继并从未改动,所以冒泡排序是壹种祥和排序算法。

亚洲必赢官网 6

动态演示

4、算法稳定性

冒泡排序便是把小的因素往前调只怕把大的要素将来调。比较是周边的七个成分对比,交流也爆发在那三个因素之间。所以,假若两个因素相等,不用沟通一下的;尽管七个非凡的成分未有相邻,那么即便通过后边的两两沟通把四个相邻起来,那时候也不会换换,所以同样成分的前后相继并从未改变,所以冒泡排序是壹种祥和排序算法。

 

五、代码达成

#include <stdio.h>
#define SIZE 8

void bubble_sort(int a[], int n);

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;
            }
        }
}

int main()
{
    int number[SIZE] = {95, 45, 15, 78, 84, 51, 24, 12};
    int i;
    bubble_sort(number, SIZE);
    for (i = 0; i < SIZE; i++)
    {
        printf("%d", number[i]);
    }
    printf("\n");
}

 

  

伍、代码完结

#include <stdio.h>
#define SIZE 8

void bubble_sort(int a[], int n);

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;
            }
        }
}

int main()
{
    int number[SIZE] = {95, 45, 15, 78, 84, 51, 24, 12};
    int i;
    bubble_sort(number, SIZE);
    for (i = 0; i < SIZE; i++)
    {
        printf("%d", number[i]);
    }
    printf("\n");
}

 

1、冒泡排序简介
冒泡排序,重复地拜会过要排序的数列,1回相比三个成分,借使她们的次第错误就把…

 

网站地图xml地图