经典算法-冒泡排序法

1. 基本思想:
  每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。
2. 排序过程:
【示例】:
  初始关键字 [49 38 65 97 76 13 27 49]
第一趟排序后 13 [38 65 97 76 49 27 49]
第二趟排序后 13 27 [65 97 76 49 38 49]
第三趟排序后 13 27 38 [97 76 49 65 49]
第四趟排序后 13 27 38 49 [49 97 65 76]
第五趟排序后 13 27 38 49 49 [97 97 76]
第六趟排序后 13 27 38 49 49 76 [76 97]
第七趟排序后 13 27 38 49 49 76 76 [ 97]
最后排序结果 13 27 38 49 49 76 76 97
3.
   #include<stdio.h>
   main()
    {
      int a[8];
      int i,j,b;
      for(i=0;i<8;i++)
      {
        scanf("%d",&a[i]);
      }
      for(j=0;j<7;j++)
       {
           for(i=0;i<7-j;i++)
             {
                if(a[i]>a[i+1])
                 {
                 b=a[i];
                 a[i]=a[i+1];
                  a[i+1]=b;
                  } 
             }
        }
       for(i=0;i<8;i++)
        {
         printf("%3d",a[i]);
        }
         printf("\n");
     }
选择排序法的第一层循环从起始元素开始选到倒数第二个元素,主要是在每次进入的第二层循环之前,将外层循环的下标赋值给临时变量,接下来的第二层循环中,如果发现有比这个最小位置处的元素更小的元素,则将那个更小的元素的下标赋给临时变量,最后,在二层循环退出后,如果临时变量改变,则说明,有比当前外层循环位置更小的元素,需要将这两个元素交换.

作者: 1987hanen   发布时间: 2010-10-19