⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 一维数组 冒泡降序 二分法查找某数 262.cpp

📁 我正在学习C编程
💻 CPP
字号:
/**/
#include<stdio.h>   //导入包含I/O函数的头文件stdio.h    
#include<stdlib.h>  //导入包含随机数函数的头文件stdlib.h
#include<time.h>    //导入          的头文件time.h
void main()
{
	printf("\n\t在降序数组中二分(折半)法查找某数\n\n");
	while(1)
	{
		printf("  用随机数给一维数组a[15]动态赋值(取值范围0~1000)");
		int i,j,x,a[15],num=0,middle,temp;
		srand((unsigned)time(NULL)); //用当前的时间设置rand()随机数函数的种子值
		printf("\n  数组a的元素值为:\n");
		for(i=0;i<15;i++)
		{
			a[i]=rand()%1001;  //产生随机数(0~1000)给数组元素赋值
			printf("\t%-6d",a[i]); 
			if((i+1)%5==0){printf("\n");}  //一行5个
		}
		for(i=0;i<15;i++)  //冒泡排序法 降序递减
		{
			for(j=14/*元素尾标*/;j>i;j--)  //两两相邻元素比较,共比较j-i次
			{
				if(a[j-1]<a[j]){temp=a[j-1];a[j-1]=a[j];a[j]=temp; } //两两相邻元素比较,<成立则交换
			}   
		}
		printf("  降序排序后数组a的元素值为:\n");
		for(i=0;i<15;i++)
		{
			printf("\t%-6d",a[i]); 
			if((i+1)%5==0){printf("\n");}  //一行5个
		}
		while(1)
		{
			printf("  输入要查找的数: "); scanf("%d",&x);
			/* 顺序查找
			for(i=0;i<15;i++){if(x==a[i]){printf(" 你要找的数是数组中第%d个.\n",i+1); break;}
						     }
			if(i>=15){printf(" 数组中无此数!\n");}
			*/
			i=0;j=14;
			while(i<=j)
			{
				middle=(i+j)/2;    //在降序数组中二分查找法
				if(x==a[middle]){break;}
				if(x<a[middle]){i=middle+1;}
				else if(x>a[middle]){j=middle-1;}
			}
			if(i<=j){printf("  你找的数是数组中的第%d个数.\n",middle+1);}
			else printf("  数组中无此数!\n");

			printf("\n  欲继续查找吗?是则回车,否则输入‘空格’回车 ");
			getchar();
			if(getchar()==' '){break;}
			else {while(getchar()!='\n'){;}} //不完整?
			   // while(getchar()!='\n'){;}   这样行吗?也不完整
		}
		printf("\n\t欲重新开始吗?是则回车,否则输入‘空格’回车 ");
		getchar();
		if(getchar()==' '){break;}
		else {while(getchar()!='\n'){;}}     //不完整?
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -