用C++编程:使用冒泡法,将数组按降序排列(利用rand()产生10个10~100之间的整数)

编程题目:

建立一个一维数组a,并完成以下任务,并输入输出格式参见下图。

(1) 利用产生10个10~100之间的整数,存入a中并输出;
(2) 使用冒泡法,将数组a按降序排列,并输出;
(3) 使用折半查找完成指定数据(从键盘输入)的查找,并输出是否查找到的信息。
数组输出结果

何谓冒泡排序法

(1)两两比较相邻元素A(I)和A(I+1)(I=1,2,…N-1),如果A(I)>A(I+1),则交换A(I)和A(I+1)的位置;
(2)对剩下的N-1个元素,再两两进行比较,按同样规则交换它们的位置,经过N-2次比较,将次最大值交换到A(N-1)的位置;
(3)如法炮制,经过N-1趟的“冒泡处理”,每趟进行N-i次的比较,全部数列有序。

C++程序参考

#include
#include
#include
using namespace std;
void main()
{
int a[10],i,j,t,top=0,mid,bot=9,x;

//利用rand()产生10个10~100之间的整数,存入a中并输出
//rand() % (b-a+1)+ a ; 表示  a~b 之间的一个随机整数
cout<<"10个10到100间的随机整数为:"<<endl;
for(i=0;i<10;i++)
{
	a[i]=10+rand()%(100-10+1);
	cout<<a[i]<<" ";
}
cout<<endl;
//使用冒泡法,将数组a按降序排列,并输出
for(i=0;i<9;i++)
{
	for(j=0;j<9;j++)
		if(a[j]<a[j+1])
		{
			t=a[j];
			a[j]=a[j+1];
			a[j+1]=t;
		}
}
cout<<"按从大到小排列的结果为:"<<endl;
for(i=0;i<10;i++)
	cout<<a[i]<<" ";
cout<<endl;
//使用折半查找完成指定数据(从键盘输入)的查找,并输出是否查找到的信息
cout<<"请输入要查找的数:";
cin>>x;
while(top<=bot)
{
	mid=(top+bot)/2;
	if(a[mid]==x)
	{
		break;
	}
	else
		if(a[mid]<x)
			bot=mid-1;
		else
			if(a[mid]>x)
				top=mid+1;
}
if(top<=bot)
	cout<<x<<"在第"<<mid+1<<"个位置。"<<endl;
else
	cout<<"该数据不存在。"<<endl;
system("pause");

}

猜你喜欢

转载自blog.csdn.net/weixin_43243112/article/details/92972031
今日推荐