算法1:冒泡排序

算法1:冒泡排序

基本思想:每次比较相邻的两个元素,如果它们的顺序错误就把它们交换过来。

算法分析:代码实现

算法分析:

例如:将 12 35 99 18 76 这5个数按从大到小排序

  1. 第一轮
    第一轮第一轮
      筛选出最小的数值,并归为
  2. 第二轮
    第二轮第二轮
      第二轮筛选出第二小的,由于第一轮最小值已经归位,所以只用比较到如图红线处。
  3. 第三轮
    第三轮第三轮
      第三轮筛选出第三小的,由于第一轮、第二轮值已经归位,所以只用比较到如图红线处。
  4. 第四轮
    第四轮第四轮
      第四轮筛选出最大的的,由于第一轮、第二轮值,三轮已经归位,所以只用比较到如图红线处。
  5. 总结
      可以看出,当一组n个数值排序,需要经历,n-1轮筛选归为,随着一轮轮数值归位,每一轮比较的次数递减。

代码实现

 1include <stdio.h>
2{
3    int a[100];
4    int i,j,t,n;
5    scanf("%d",&n);    /* 输入一个数n ,表示有n个数需要排序 */
6    fot(i = 0;i<n;i++)
7    {
8        scanf("%d",&a[i]); /* 循环读入n个数到数组a中 */
9        // 冒泡核心算法
10        for(i = 0; i < n-1;i++)
11        {
12            for(j = 0; j < n -i;j++)
13            {
14                if(a[j] < a[j+1])   /* 比较大小并交换值 */
15                {
16                    t = a[j];
17                    a[j] = a[j+1];
18                    a[j+1] = t;
19                }
20            }
21        }
22    }
23    /* 输出结果 */
24    for(i = 0; i<n;i++)
25        printf("%d ",a[i]);
26
27}
posted @ 2018-12-28 10:42  天星小苑  阅读(354)  评论(0编辑  收藏  举报