| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 692 人关注过本帖
标题:我写改进型冒泡大家过来看一看,大家给一点建意
只看楼主 加入收藏
点线面
Rank: 8Rank: 8
来 自:NO.-1
等 级:蝙蝠侠
帖 子:525
专家分:980
注 册:2011-1-3
结帖率:100%
收藏
 问题点数:0 回复次数:6 
我写改进型冒泡大家过来看一看,大家给一点建意
程序代码:
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <conio.h>

using namespace std;

int main()

 {
     srand((time(0)));
      
     const int M = 20;
     int i,j,a[20],temp,m;
     bool Bool;

     for(i=0;i<M;a[i]=rand()%100+1,i++);

                 for(i=0;i<M;i++)
                cout<<a[i]<<" ";
                cout<<'\n';

       i=0;
     do{
           Bool = false;

        for(j=i;j<M-1-i;j++)
            if(a[j] > a[j+1])
            {

                temp = a[j];
                a[j] = a[j+1];
                a[j+1] = temp;
                Bool = true;
            }
          
        if(Bool == true)
        {
            Bool = false;

            for(m = M-2-i ; m > i; m --)
               if( a[m] < a[m-1] )
            {
                temp = a[m];
                a[m] = a[m-1];
                a[m-1] = temp;
                Bool = true;
            }
        }
            i++;

     }while(Bool);
            for(i=0;i<M;i++)
                cout<<a[i]<<" ";
           
     getch();
     return 0;
}
有什么建意可以提出来

[ 本帖最后由 点线面 于 2011-1-7 09:56 编辑 ]
2011-01-06 21:37
点线面
Rank: 8Rank: 8
来 自:NO.-1
等 级:蝙蝠侠
帖 子:525
专家分:980
注 册:2011-1-3
收藏
得分:0 
程序代码:
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <conio.h>

using namespace std;

int main()

 {
     srand((time(0)));
      
     const int M = 20;
     int i,j,a[M],m;
     bool Bool;

     for(i=0;i<M;a[i]=rand()%100+1,i++);    //生成M个随机数

                 for(i=0;i<M;i++)            //打印M个数据
                cout<<a[i]<<" ";
                cout<<'\n';

       i=0;
     do{
           Bool = false;

        for(j=i;j<M-1-i;j++)                 //将最大放在右边,适当收窄范围
            if(a[j] > a[j+1])
            {
                a[j] = a[j]+a[j+1];          //两个数交换,另一种方法
                a[j+1] = a[j]-a[j+1];
                a[j] = a[j]-a[j+1];
                Bool = true;
            }
          
        if(Bool == true)                      //如果没有排序,就结束任务     
        {
            Bool = false;

            for(m = M-2-i ; m > i; m --)      //将最小放在左边,适当收窄范围
               if( a[m] < a[m-1] )
            {
                a[m] = a[m]^a[m-1];           //两个数交换,另一种方法
                a[m-1] = a[m]^a[m-1];
                a[m] = a[m]^a[m-1];
                Bool = true;
            }
        }
            i++;

     }while(Bool);                             //如果没有排序,就结束任务

            for(i=0;i<M;i++)                   //打印排好的M个数据
                cout<<a[i]<<" ";
           
     getch();
     return 0;
}
作了小小的修改,顺便加注释

小代码,大智慧
2011-01-07 10:45
点线面
Rank: 8Rank: 8
来 自:NO.-1
等 级:蝙蝠侠
帖 子:525
专家分:980
注 册:2011-1-3
收藏
得分:0 
程序代码:
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <conio.h>

using namespace std;

int main()

 {
     srand((time(0)));
      
     const int M = 20;
     int i,j,a[M];
     bool Bool=true;

     for(i=0;i<M;a[i]=rand()%100+1,i++);    //生成M个随机数

                 for(i=0;i<M;i++)            //打印M个数据
                cout<<a[i]<<" ";
                cout<<'\n';

     for(i=0;Bool&&i<M-1;i++)               //如果没有排序结束任务        
     {
            Bool = false;                    

        for(j=0;j<M-1-i;j++)                
            if(a[j] > a[j+1])
            {
                a[j] = a[j]^a[j+1];         
                a[j+1] = a[j]^a[j+1];
                a[j] = a[j]^a[j+1];

                Bool = true;
            }
          
     }
            for(i=0;i<M;i++)                   //打印排好的M个数据
                cout<<a[i]<<" ";
           
     getch();
     return 0;
}
同上面的程序算法没有明显差别,差别在于上面的程序多了存储空间,综合考虑还是这个程序适合改进型

[ 本帖最后由 点线面 于 2011-1-7 11:54 编辑 ]

小代码,大智慧
2011-01-07 11:48
yangglemu
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:273
专家分:521
注 册:2006-9-15
收藏
得分:0 
好,不错
看冒泡排序有两层循环就行了,剩下的就不用看了,他们说的

试着挣个威望!
2011-01-08 11:02
xdzsm
Rank: 2
等 级:论坛游民
帖 子:137
专家分:99
注 册:2010-10-26
收藏
得分:0 
好!学习了!
2011-01-10 22:23
DestinyLord
Rank: 2
等 级:论坛游民
帖 子:26
专家分:41
注 册:2010-6-1
收藏
得分:0 
好像就是把算法改了吧?感觉改复杂了一样.....

逆风的方向,更适合飞翔!
2011-01-16 11:26
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
原本只要简单的一个标志位就行了, 代码改成这个样子,
说明楼主基础不好,同时也说明楼主思想不纯。

我就是真命天子,顺我者生,逆我者死!
2011-01-16 11:35
快速回复:我写改进型冒泡大家过来看一看,大家给一点建意
数据加载中...
 
   



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

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