?? 一維數(shù)組 冒泡升序 二分法查找某數(shù) 262.cpp
字號(hào):
/**/
#include<stdio.h> //導(dǎo)入包含I/O函數(shù)的頭文件stdio.h
#include<stdlib.h> //導(dǎo)入包含隨機(jī)數(shù)函數(shù)的頭文件stdlib.h
#include<time.h> //導(dǎo)入 的頭文件time.h
void main()
{
printf("\n\t在升序數(shù)組中二分(折半)法查找某數(shù)\n\n");
while(1)
{
printf(" 用隨機(jī)數(shù)函數(shù)給一維數(shù)組a[15]動(dòng)態(tài)賦值(取值范圍-500~+2000)");
int i,j,x,a[15],num=0,middle,temp;
srand((unsigned)time(NULL)); //用當(dāng)前的時(shí)間設(shè)置rand()隨機(jī)數(shù)函數(shù)的種子值
printf("\n 數(shù)組a[15]的元素值為:\n");
for(i=0;i<15;i++)
{
a[i]=-500+rand()%2500; //產(chǎn)生隨機(jī)數(shù)(-500~+2000)給數(shù)組元素賦值
printf("\t%-6d",a[i]);
if((i+1)%5==0){printf("\n");} //一行5個(gè)
}
for(i=0;i<15;i++) //冒泡排序法 升序遞增
{
for(j=14/*元素尾標(biāo)*/;j>i;j--) //兩兩相鄰元素比較,共比較j-i次
{
if(a[j-1]>a[j]){temp=a[j-1];a[j-1]=a[j];a[j]=temp; } //兩兩相鄰元素比較,>成立則交換
}
}
printf(" 升序排序后數(shù)組a[15]的元素值為:\n");
for(i=0;i<15;i++)
{
printf("\t%-6d",a[i]);
if((i+1)%5==0){printf("\n");} //一行5個(gè)
}
while(1)
{
printf(" 輸入要查找的數(shù): "); scanf("%d",&x);
/* 順序查找
for(i=0;i<15;i++){if(x==a[i]){printf(" 你要找的數(shù)是數(shù)組中第%d個(gè)數(shù).\n",i+1); break;}
}
if(i>=15){printf(" 數(shù)組中無(wú)此數(shù)!\n");}
*/
i=0;j=14;
while(i<=j)
{
middle=(i+j)/2; //在升序數(shù)組中二分查找法
if(x==a[middle]){break;}
else if(x>a[middle]){i=middle+1;}
else if(x<a[middle]){j=middle-1;}
}
if(i<=j){printf(" 你找的數(shù)是數(shù)組中的第%d個(gè)數(shù).\n",middle+1);}
else printf(" 數(shù)組中無(wú)此數(shù)!\n");
printf("\n 欲繼續(xù)查找嗎?是則回車,否則輸入‘空格’回車 ");
getchar();
if(getchar()==' '){break;}
else {while(getchar()!='\n'){;}} //不完整?
/* while(getchar()!='\n'){;} 這樣行嗎?也不完整*/
}
printf("\n\t欲重新開始嗎?是則回車,否則輸入‘空格’回車 ");
getchar();
if(getchar()==' '){break;}
else {while(getchar()!='\n'){;}} //不完整?
}
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -