📄 一维数组 冒泡降序 二分法查找某数 指针 279.cpp
字号:
/**/
#include<stdio.h> //导入包含I/O函数的头文件stdio.h
#include<stdlib.h> //导入包含随机数函数的头文件stdlib.h
#include<time.h> //导入 的头文件time.h
void main()
{
printf("\n\t\t在降序数组中使用指针,二分(折半)法查找某数\n");
printf("───────────────────────────────────────\n");
while(1)
{
printf(" 用随机数给一维数组a[15]动态赋值(取值范围0~1000)");
int i,j,a[15],num,middle,temp,x,*xx=&x,*p;
srand((unsigned)time(NULL)); //用当前的时间设置rand()随机数函数的种子值
printf("\n 数组a的元素值为:\n");
for(num=0,p=a;p<a+15;p++)
{
*p=rand()%1001; //产生随机数(0~1000)给数组元素赋值
printf("\t%-6d",*p); num++;
if(num%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(num=0,p=a;p<a+15;p++)
{
printf("\t%-6d",*p); num++;
if(num%5==0){printf("\n");} //一行5个
}
while(1)
{
printf(" 输入要查找的数: "); scanf("%d",xx);
/* 顺序查找
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(*xx==a[middle]){break;}
if(*xx<a[middle]){i=middle+1;}
else if(*xx>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'){;}} //不完整?
}
printf("\n ┈┈┈┈┈┈┈┈欲重新开始吗?是则回车,否则输入‘空格’回车┈┈┈┈┈┈┈┈\n");
getchar();
if(getchar()==' '){break;}
else {while(getchar()!='\n'){;}} //不完整?
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -