无情的心 发表于 2021-3-16 20:44:33

浅谈冒泡排序

      排序方法是一种重要的、基本的算法。排序的方法很多,冒泡排序法就是其中的一种。冒泡排序法的基本思路是:每次将相邻的两个数比较,将较小的调到前面。若有六个数,9,8,5,4,2,0,第一次先将最前面的两个数8和9对调(见图一)。第二次将第2和第3个数(9和5)对调,如此共进行5次,得到8-5-4-2-0-9的顺序,可以看到最大的数9已经“沉底”,成为最下面一个数,而小的数“上升”。最小的数0已经向上浮起一个位置。经过第一趟(共5次比较与交换)后,已得到最大的数9。
      然后进行第二趟比较,对余下的前面5个数(8,5,4,2,0)进行新一轮的比较,以便使次大的数“沉底”。按以上方法进行第二趟比较,。经过这一趟4次比较与交换,得到次大的数8.。
        按此规律进行下去,可以推知对6个数要比较5趟,才能使6个数按大小顺序排列。在第1趟中要进行两个数之间的比较共5次,在第二趟过过程中比较4次……第5趟只需比较一次。
        如果有n个数,则要进行n-1趟比较。在第一趟中要进行n-1次两两比较,在第j趟比较中要进行n-j次两两比较。

        例:
#include <stdio.h>
int main()
{
int a
int i,j,t;
printf("输入十个数:\n");
for(i-0;i<10;i++)
        scanf("%d",&a);
printf("\n")
for(j=0;j<9;j++)
        for(i=0;i<9-j;i++)
                if(a>a)
                {
                        t=a;a=a;a=t;};
                }
printf("排序后为:\n“);
for(i=0;i<10;i++)
        printf("%d",a);
printf("\n")
return 0;
}

无情的心 发表于 2021-3-16 20:45:58

{:10_245:}

柿子饼同学 发表于 2021-3-16 21:18:40

想问下大佬,我学python要学这种算法么

hornwong 发表于 2021-3-16 21:35:19

{:5_95:}

han125416866 发表于 2021-3-16 22:26:04

{:5_106:}

huangrui0428 发表于 2021-3-17 09:17:11

{:5_106:}

无情的心 发表于 2021-3-17 09:21:15

柿子饼同学 发表于 2021-3-16 21:18
想问下大佬,我学python要学这种算法么

算法就像是乐谱一样,不局限于任何乐器,同样算法也是不就是解决问题的方法{:10_334:}
页: [1]
查看完整版本: 浅谈冒泡排序