冒泡排序的运作规律(好明白):

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

它再度地访问过要排序的数列,三次相比较四个要素,假设他们的壹一错误就把她们沟通过来。走访数列的工作是双重地展开直到未有再必要沟通,也便是说该数列已经排序完毕。

冒泡排序的落实,冒泡排序达成

一、冒泡排序简介

冒泡排序,重复地访问过要排序的数列,叁次比较五个要素,若是她们的逐一错误就把他们交流过来。走访数列的办事是双重地开始展览直到未有再须求交流,也正是说该数列已经排序达成。

  1. 正如相邻的因素。借使首个比第二个大,就调换他们五个。
  2. 对每1对周围成分作同样的劳作,从发轫首先对到结尾的最后1对。那步做完后,最后的成分会是最大的数。
  3. 针对全数的因素重复以上的手续,除了最后1个。
  4. 穿梭每一趟对越来越少的成分重复上面包车型地铁手续,直到未有此外壹对数字供给相比。

金沙注册送58 1

1、冒泡排序简介

冒泡排序,重复地走访过要排序的数列,叁次相比多个因素,假诺她们的次第错误就把他们沟通过来。走访数列的干活是重新鸿集散地产拓展直到未有再必要交流,也正是说该数列已经排序完结。

贰、算法的运维

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

  1. 正如相邻的因素。尽管第1个比第一个大,就调换他们三个。

  2. 对每1对周边成分作同样的办事,从上马率先对到终极的最后1对。在那一点,最终的成分应该会是最大的数。

  3. 针对富有的因素重复以上的步调,除了最终二个。

  4. 持续每便对越来越少的要素重复上面的步调,直到未有任何1对数字须要相比。金沙注册送58 2

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

【金沙注册送58】冒泡排序,冒泡排序的落到实处。冒泡排序进度

2、算法的运维

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

  1. 比较相邻的因素。假如第三个比首个大,就交换他们多少个。
  2. 对每1对附近成分作同样的行事,从初叶率先对到最后的末梢一对。在那点,最终的要素应该会是最大的数。
  3. 针对富有的成分重复以上的手续,除了最终一个。
  4. 绵绵每一次对更少的因素重复上面的手续,直到未有其它壹对数字须求相比较。金沙注册送58 3

三、时间复杂度

     
若文件的早先状态是正序的,1趟扫描即可形成排序。所需的根本字相比较次数和笔录移动次数均达标最小值:相比较次数:
n-1 ,移动次数为0 。所以,冒泡排序最棒的年华复杂度为O(n) 。
  若开头文件是反序的,要求进行趟n-一 排序。每一次排序要开始展览 n-i
((一≤i≤n-壹))次重要字的相比较,且每一次相比较都必须移动记录2次来完结调换记录地点。在那种意况下,相比和平运动动次数平均高度达最大值:相比次数n*(n-一)/2,移动次数3n*(n-1)/2 。
冒泡排序的最坏时间复杂度为O(n*n) 。
综上,由此冒泡排序总的平均时间复杂度为O(n*n) 。

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

算法原理(从后往前):

  1. 正如相邻的因素。假诺第贰个比第二个大,就沟通他们五个。

二.
对每壹对周围成分作同样的劳作,从上马首先对到最终的末梢壹对。在那或多或少,最终的因素应该会是最大的数。

  1. 本着全部的要素重复以上的步子,除了最终3个。

肆.
持续每一次对越来越少的成分重复上边的手续,直到没有任何壹对数字供给比较。

三、时间复杂度

     
若文件的开端状态是正序的,1趟扫描即可到位排序。所需的主要字相比较次数和记录移动次数均达到最小值:相比次数:
n-一 ,移动次数为0 。所以,冒泡排序最好的时辰复杂度为O(n) 。
  若开头文件是反序的,必要实行趟n-壹 排序。每一趟排序要进行 n-i
((一≤i≤n-1))次主要字的可比,且每一回相比较都必须移动记录2回来实现沟通记录地方。在那种情景下,比较和平运动动次数均达到规定的标准最大值:相比较次数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] + " ");
            }

算法完毕:

金沙注册送58 4

java实现

金沙注册送58 5

python实现


冒泡排序正是把小的因素往前调也许把大的要素以往调。相比较是隔壁的多少个要素相比较,调换也产生在那么些成分之间。所以,假使四个因素相等,小编想你是不会再俗气地把她们俩换到一下的;假若八个分外的因素未有相邻,那么正是通过前边的两两置换把多个相邻起来,那时候也不会换换,所以同样成分的内外相继并未有变动,所以冒泡排序是一种祥和排序算法。

金沙注册送58 6

动态演示

四、算法稳定性

冒泡排序正是把小的因素往前调只怕把大的因素将来调。相比较是左近的三个要素比较,沟通也发生在那一个元素之间。所以,假使多个因素相等,不用交流一下的;如若多个十二分的要素未有相邻,那么正是通过前边的两两沟通把多少个相邻起来,那时候也不会换换,所以同样成分的上下相继并从未改动,所以冒泡排序是1种祥和排序算法。

 

5、代码实现

#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");
}

 

金沙注册送58,  

伍、代码实现

#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");
}

 

一、冒泡排序简介
冒泡排序,重复地走访过要排序的数列,一遍比较多个因素,要是他们的一壹错误就把…

 

相关文章

网站地图xml地图