主题:~~~~!!请问哪个高手能告诉小弟我什么是冒泡程序?~~~
cfv501
[专家分:0] 发布于 2009-12-04 16:21:00
我是一名新手 刚学C++程序 今天看到一道题目上面写着“用冒泡来解答”~~~~~请问什么是冒泡程序呀?
最后更新于:2009-12-04 16:27:00
回复列表 (共3个回复)
沙发
Johnny36 [专家分:20] 发布于 2009-12-05 19:20:00
冒泡是中排序方式吧 叫冒泡法
板凳
cfv501 [专家分:0] 发布于 2009-12-06 04:46:00
谢谢 但是我还是不懂 你能教我怎么用吗?
3 楼
miaoyong [专家分:760] 发布于 2009-12-09 20:46:00
我三年前写的,你参考一下!
#include <iostream>
#include <stdlib.h>
#include <cstring>
#include <string.h>
using namespace std;
int main()
{
int i=0,j=0,k=0,a=0,b=0,n=0,m=0,sum=0,array1[256]={0,0},up=0,down=0;
char message[10]="Y",mode='o';
cout<<"这是一个升序/降序排序法;输入一组整数进行升序/降序排序,并输出!\n";
while(1)
{
cout<<"请输入一个整数!指定要输入数组的大小!\n";
cin>>n;
cout<<"请输入一组整数!小于65535的整数\n";
for(i=0;i<n;i++)
{
cin>>array1[i];
}
for(i=0;i<n;i++)
{
cout<<" "<<array1[i];
}
cout<<'\n';
cout<<'\n';
cout<<"请输入'u',为升序排列,请输入'd',为降序排序"<<'\n';
cin>>mode;
switch(mode)
{
case 'u': sum=1;
break;
case 'd': sum=2;
break;
default: cout<<" endd"<<mode<<endl;
}
cout<<"sum="<<sum<<" n="<<n<<'\n';
if(sum==2)
{
for(i=0;i<n;i++)
{
for(j=n-1;j>i;j--)
{
if(array1[j]>array1[j-1])
{
down=array1[j-1];
array1[j-1]=array1[j];
array1[j]=down;
}
}
for(m=0;m<n;m++)
{
cout<<" "<<array1[m];
}
cout<<'\n';
}
}
if(sum==1)
{
for(a=0;a<n;a++)
{
for(b=n-1;b>a;b--)
{
if(array1[b]<array1[b-1])
{
up=array1[b];
array1[b]=array1[b-1];
array1[b-1]=up;
}
}
for(m=0;m<n;m++)
{
cout<<" "<<array1[m];
}
cout<<'\n';
}
}
cout<<endl<<endl<<endl;
if(n>0)
{
for(i=0;i<8;i++)
cout<<" "<<array1[i];
}
cout<<'\n';
if(n>8)
{
for(i=1;i<n/8;i++)
{
for(j=0;j<8;j++)
{
cout<<" "<<array1[8*i+j];
}
cout<<'\n';
}
}
if(n>8 && n%8!=0)
{
if(n>16)
{
for(m=1;m<=n%8;m++)
cout<<" "<<array1[8*i+j+m];
}
else if(n<=16 && n>8)
{ for(m=0;m<n%8;m++)
cout<<" "<<array1[8+m];
}
}
cout<<'\n';
cout<<"是否继续? Y/N!"<<'\n';
cin>>message;
if(!strcmp(message,"n") || !strcmp(message,"N"))
{
break;
}
for(k=0;k<256;k++)
{array1[k]=0;
}
}
cout<<endl;
system("pause");
return 0;
}
我来回复