冒泡排序实现,冒泡排序的落实

冒泡排序实现,冒泡排序的落实。冒泡排序的运作规律(好明白):

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

它再一次地拜会过要排序的数列,3次相比五个成分,假使他们的逐1错误就把他们交流过来。走访数列的做事是再一次地开始展览直到未有再供给沟通,也正是说该数列已经排序达成。

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

一、冒泡排序简介

冒泡排序,重复地走访过要排序的数列,贰遍比较两个因素,倘诺他们的依次错误就把她们调换过来。走访数列的行事是重复地展开直到未有再须要交换,也便是说该数列已经排序完结。

  1. 正如相邻的要素。若是第三个比第2个大,就沟通他们多个。
  2. 对每一对周围成分作同样的工作,从初叶率先对到最终的最终一对。那步做完后,最后的元素会是最大的数。
  3. 本着富有的成分重复以上的步子,除了最终多个。
  4. 持续每一趟对更少的因素重复下边包车型大巴步调,直到未有别的壹对数字要求比较。

美高梅开户网址 1

一、冒泡排序简介

冒泡排序,重复地拜会过要排序的数列,贰次比较四个成分,若是他们的各类错误就把他们沟通过来。走访数列的做事是重新鸿基土地资金财产拓展直到未有再须求交流,也正是说该数列已经排序完毕。

2、算法的周转

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

  1. 比较相邻的要素。假如第一个比第二个大,就调换他们五个。

  2. 对每壹对相近成分作同样的劳作,从起始首先对到最后的末段一对。在那或多或少,最终的因素应该会是最大的数。

  3. 本着全数的因素重复以上的手续,除了最后1个。

  4. 持续每便对更少的要素重复上边的手续,直到未有别的壹对数字须求比较。美高梅开户网址 2

美高梅开户网址,备注:上述讲解来自 维基百科 冒泡排序

冒泡排序进程

贰、算法的周转

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

  1. 正如相邻的元素。借使首个比第二个大,就交流他们七个。
  2. 对每1对左近元素作同样的做事,从开头率先对到最后的结尾一对。在那点,最终的因素应该会是最大的数。
  3. 本着全数的因素重复以上的步子,除了最终2个。
  4. 不停每一回对更少的因素重复上边的步子,直到未有此外1对数字须要相比。美高梅开户网址 3

三、时间复杂度

     
若文件的上马状态是正序的,壹趟扫描即可到位排序。所需的最重要字比较次数和笔录移动次数平均高度达最小值:比较次数:
n-一 ,移动次数为0 。所以,冒泡排序最棒的日子复杂度为O(n) 。
  若起始文件是反序的,必要进行趟n-1 排序。每一回排序要开始展览 n-i
((一≤i≤n-一))次首要字的可比,且每趟相比都无法不移动记录2次来达到调换记录地方。在这种景色下,相比和平运动动次数均达到规定的标准最大值:比较次数n*(n-一)/二,移动次数三n*(n-1)/2 。
冒泡排序的最坏时间复杂度为O(n*n) 。
综上,因而冒泡排序总的平均时间复杂度为O(n*n) 。

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

算法原理(从后往前):

  1. 比较相邻的要素。假使第1个比第四个大,就交换他们八个。

二.
对每1对周边成分作同样的办事,从初步率先对到结尾的最终一对。在那或多或少,最终的成分应该会是最大的数。

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

四.
持续每回对越来越少的要素重复下面的步调,直到没有别的一对数字供给相比。

三、时间复杂度

     
若文件的上马状态是正序的,1趟扫描即可成功排序。所需的首要性字相比较次数和笔录移动次数均达到规定的标准最小值:比较次数:
n-壹 ,移动次数为0 。所以,冒泡排序最棒的小时复杂度为O(n) 。
  若起始文件是反序的,供给展开趟n-1 排序。每一回排序要举行 n-i
((1≤i≤n-壹))次主要字的可比,且每回比较都不能够不移动记录三遍来达到交流记录地方。在那种情形下,相比和移动次数均达到规定的标准最大值:相比次数n*(n-一)/2,移动次数3n*(n-1)/2 。
冒泡排序的最坏时间复杂度为O(n*n) 。
综上,因而冒泡排序总的平均时间复杂度为O(n*n) 。

肆、算法稳定性

冒泡排序便是把小的要素往前调只怕把大的要素未来调。对比是相邻的多个成分比较,沟通也时有爆发在那三个因素之间。所以,要是多少个要素相等,不用调换一下的;若是三个极度的成分未有相邻,那么就算通过前边的两两置换把三个相邻起来,这时候也不会换到,所以同样成分的左右相继并从未改观,所以冒泡排序是1种祥和排序算法。

 

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实现


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

美高梅开户网址 6

动态演示

4、算法稳定性

冒泡排序便是把小的成分往前调大概把大的元素以后调。相比较是隔壁的三个因素相比,交流也时有发生在那多个要素之间。所以,借使七个成分相等,不用调换一下的;假诺多少个10分的因素未有相邻,那么即便通过前边的两两置换把四个相邻起来,那时候也不会换换,所以同样元素的前后相继并未更改,所以冒泡排序是壹种祥和排序算法。

 

五、代码完成

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

 

  

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

 

壹、冒泡排序简介
冒泡排序,重复地访问过要排序的数列,3遍相比几个要素,倘诺她们的逐条错误就把…

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图