用C++编写冒泡排序法(每步都要详细解释) 谢谢了

2024-12-15 20:17:16
推荐回答(4个)
回答1:

给你三种方法 不明白的话再联系我:
1. 用起泡法把数组中的数从大到小排列
方法一:
#include
using namespace std;
int main()
{
int a[10];
int i,j;
cout<<"请输入各个数字:"<<' ';
for(i=0;i<10;i++)
cin>>a[i];
for(j=1;j<10;j++)//进行n-1次循环,n-i趟比较
for(i=0;i<10-j;i++)//每趟进行n-i-j次比较
{ if(a[i]>a[i+1])//相邻两数进行比较
{
int t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}

}
for(i=0;i<10;i++)
cout< cout< return 0;
}

问题:注意i的条件

方法二
#include
using namespace std;
int main()
{
int i,j,a[10]={54 ,7 ,8 ,93, 4 ,33 ,6 ,12 ,28, 0};
//定义数组a【】并初始化各值
for(j=1;j<10;j++)
for(i=0;i<=9-j;i++)
{
if(a[i]>a[i+1])
//对相邻两数进行比较,如果条件成立,交换两数的值,
{
int t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}

}
for(i=0;i<10;i++)
cout< cout< return 0;
}

方法三
#include
using namespace std;
int main()
{
int a[100];
int n,i,j;
cout<<"请输入要比较的数字个数:"<<' ';
cin>>n;
cout<<"请输入各个数字:"<<' ';
for(i=0;i cin>>a[i];
for(j=1;j for(i=0;i {
if(a[i]>a[i+1])//相邻两数进行比较
{
int t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}

}
for(i=0;i cout< cout< return 0;
}

回答2:

#include
void main()
{
int a[20],t; //定义最多给20个数排序
int n;
cout<<"请输入有几个数你要排序:";
cin>>n;
for(int i=0;i{
cout<<"请输入第"<cin>>a[i];
}
for (i=0;i{
for (int d=i+1;dif(a[i]>a[d])
{
t=a[i];
a[i]=a[d];
a[d]=t;
}
}
cout<<"以上"<for(i=0;icout<}
/*冒泡排序也是初学c++的同学必做实验之一,smilediao当时也非常的头痛,心想要是有人
给个程序例子参考一下就好了,可惜呀...在网上找到的都是用c 写的而且都是经过了很多
的人的转载总会有一些的错误出现,没有人愿意去给新手写一个完整而又正确简洁的程序,
smilediao对初学者深表同情,于是就写了一个,供大家参考,我们要的不是鱼,而是钓鱼
的方法,希望从这个程序中你能总结出你的钓鱼方法!*/
qq379389449

回答3:

给大家介绍冒泡排序的Scratch做法

回答4:

#include "stdio.h"
#include "stdlib.h"
/*"malloc.h"*/
#include "string.h"
#define NULL 0
#define LEN sizeof(struct stu)
struct stu{
long num;
char name[20];
char sex;
int age;
float score;
struct stu *next;
}*head=NULL;
struct stu *creat();
void print (struct stu*);
main()
{char flag;
while(1)
{getchar();
printf("c\n");
flag=getchar();
switch(flag)
{
case'c':head=creat();break;
default:exit(0);}
print(head);
}
}
struct stu *creat()
{
char c,c0;
struct stu *head=NULL,*p1,*p2;
p1=p2=(struct stu *)malloc(LEN);
printf("输入 num name sex age score\n");
scanf("%Ld%s%c%c%d%f%c",&p1->num,p1->name,&c0,&p1->sex,&p1->age,&p1->score,&c );
while(1)
{
if(head==NULL) head=p1;
else p2->next=p1;
p2=p1;
if(c=='#')break;
p1=(struct stu*)malloc(LEN);
scanf("%Ld%s%c%c%d%f%c",&p1->num,p1->name,&c0,&p1->sex,&p1->age,&p1->score,&c );
}
p2->next=NULL;
return head;}
void print(struct stu *head)
{
struct stu *p;
p=head;
printf("num name sex age score\n");
if(head!=NULL)
do{
printf("%Ld %s %c %d %f\n",p->num,p->name,p->sex,p->age,p->score );
p=p->next;
}while(p!=NULL);
}