标题:冒泡排序法的详细过程。
只看楼主
自学的数学
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:46
帖 子:967
专家分:4146
注 册:2017-11-15
结帖率:93.33%
已结贴  问题点数:20 回复次数:1 
冒泡排序法的详细过程。
程序代码:
#include <stdio.h>
void sort(int *a,int len)

 {
   int i=0;
   int j;
   int t;
   int count=0;
   int z;
   for(i=0;i<len-1;i++)
     {
       for(j=0;j<len-i-1;j++)
          {
           if(a[j]>a[j+1])
              {
                t=a[j];
                a[j]=a[j+1];
                a[j+1]=t;
             }
         }
         printf("第%d次交换:",++count);
        for(z=0;z<10;z++)
           printf("%d ",a[z]);
       printf("\n");
     }
  }
int main(int argc, char *argv[])
{
   int a[10]={11,2,3,4,5,6,8,7,10,9};
   int i=0;
   printf("交换前的数据: ");
   for(i=0;i<10;i++)
              printf(" %d",a[i]);
   printf("\n");
   sort(a,10);
   printf("交换后的数据: ");
   for(i=0;i<10;i++)
             printf("%d ",a[i]);
  return 0;
}

效果如图:

这里的数据11第一次交换不是直接一步到位就交换到最后位置的,而是先和2交换,然后和3交换,然后和4交换,然后和5交换,。。最后和9交换,这里一共交换了9步,可是代码却是1次交换就完成了。我现在想要的是这9步交换的每一步都输出来。
即:
2,11,3,4,5,6,8,7,10,9
2,3,11,4,5,6,8,7,10,9
2,3,4,11,5,6,8,7,10,9
2,3,4,5,11,6,8,7,10,9
2,3,4,5,6,11,8,7,10,9
2,3,4,5,6,8,11,7,10,9
2,3,4,5,6,8,7,11,10,9
2,3,4,5,6,8,7,10,11,9
2,3,4,5,6,8,7,10,9,11
.
.
.
.
.
.
直到2 3 4 5 6 7 8 9 10 11结束,并统计这样共交换了多少步?
还有就是如图的第二次交换到第九次交换是一样的,只要排序完成,就不用再做多余的工作了,第三到第九次交换就是多余的。
搜索更多相关主题的帖子: 过程 int for printf 交换 
2018-05-17 10:48
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:20 
把for循环写进if里面试试~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2018-05-17 11:04



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-487006-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.374536 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved